def accumulate(instructions: list) -> dict:
    """
    Read and execute instructions until an infinite loop if found:
        acc +12 -> add 12 to 'acc'
        jmp +48 -> jump to the instruction located at 'index' + 48
        nop -56 -> do nothing & go to the next instruction

    if an instruction has already been executed, stop and return the current 'acc' value
    """

    acc = 0
    index = 0
    seen = []

    while index < len(instructions):
        if index in seen:
            return {'acc': acc, 'infinite': True}

        seen.append(index)
        op, val = instructions[index].split(' ')

        if op == 'acc':
            acc += int(val)
        elif op == 'jmp':
            index += int(val)
            continue

        index += 1

    return {'acc': acc, 'infinite': False}