Я пытаюсь рекурсивно перейти по 2d массиву, перепрыгивая в строку с индексом столбца, в котором я могу найти значение.
# 0 1 2 3
sample_array_of_arrays = [[0, 1, 1, 0], #row 0
[0, 0, 1, 1], #row 1
[0, 0, 0, 0], #row 2
[0, 0, 0, 0]] #row 3
Это означает, что для приведенного выше примера: в строке 0 в позиции 1 есть значение. Итак, я go в строке 1. Я нахожу значение в позиции 2, поэтому я go в строке 2. Я не нахожу никаких значений в строке 2, поэтому я заканчиваю. Я делаю это для всех возможных комбинаций и получаю следующее:
row0 -> row1 -> row1 -> row2
row0 -> row1 -> row3
row0 -> row2
Я пробовал множество различных рекурсивных подходов, но я не могу понять это. Это работает для одной комбинации (row0 -> row1 -> row2)
def rec_go_through_grpah(row,index):
if sum(sample_array_of_arrays[row])==0:
print("row " +str(row) + " reached dead end")
return
else:
while index <= len(sample_array_of_arrays[row]):
current_element = sample_array_of_arrays[row][index]
if current_element==0:
rec_go_through_grpah(row, index+1)
else:
print ("row "+str(row) + "->")
rec_go_through_grpah(index,0)
if __name__=="__main__":
sample_array_of_arrays = [[0, 1, 1, 0], # row 0
[0, 0, 1, 1], # row 1
[0, 0, 0, 0], # row 2
[0, 0, 0, 0]] # row 3
rec_go_through_grpah(0,0)
Это бесконечное l oop и вывод
row 0->
row 1->
row 2 reached dead end
row 1->
row 2 reached dead end
row 1->
row 2 reached dead end
row 1->
row 2 reached dead end
...