Как напечатать n-ю строку вывода функции - PullRequest
0 голосов
/ 20 января 2019

Как я могу напечатать n-ю строку вывода 'a'?Я пытался нарезать «а», но это не работает.Кажется, я тоже не могу перебрать 'a'.

A = [1,2,3]
B = []
C = []

def move(n, pegA, pegB, pegC):
    if n > 0:
        move(n - 1, pegA, pegC, pegB)
        target.append(pegA.pop())
        print(len(A), len(B), len(C))
        move(n - 1, pegC, pegB, pegA)

a = move(3, A, C, B)

a возвращает вывод ниже:

2 0 1
1 1 1
1 2 0
0 2 1
1 1 1
1 0 2
0 0 3

Я хотел бы напечатать, например, 2-ю строку, которая1 1 1. Должен ли я вместо этого перестроить функцию 'move'?

1 Ответ

0 голосов
/ 20 января 2019

Способ структурирования move не сохраняет никаких записей выходных данных, которые он напечатал, и восстановить его будет очень сложно.Если вам нужно искать строки вывода по индексу, вы можете вместо этого возвращать список с каждой строкой вывода, например:

def move(n, pegA, pegB, pegC, output_lines=None):
    if output_lines is None:
        output_lines = []
    if n > 0:
        move(n - 1, pegA, pegC, pegB, output_lines)
        target.append(source.pop())
        output_lines.append('%d %d %d' % (len(A), len(B), len(C)))
        move(n - 1, pegC, pegB, pegA, output_lines)
    return output_lines

a = move(3, A, C, B)

# print all lines of output
print('\n'.join(a))

# print 2nd line
print(a[1])
...