Проблема с рекурсивным заливкой в ​​2D списке для тральщика - PullRequest
0 голосов
/ 10 мая 2019

Не можете понять, как создать рекурсивную функцию, которая будет заполнять все пустые поля и показывать мои подсказки на игровом поле списка 2D.Я понимаю, как функция должна работать, но все еще не может прийти к рабочему решению.

Я пытался заставить мою функцию вызывать рекурсивный вызов до тех пор, пока в строке не будет найдено целое число, а затемперейдите к следующему ряду.Я знаю, что я должен передать на доске мои подсказки, чтобы рекурсивный вызов знал, когда он достигает целого числа, просто неуверен, как это сделать.

на данный момент это все, что у меня есть;

def island(board, row, col):


    if board[row][col] != " ":
        board[row][col] = " "


        if row != 1:
            island(board,row-1,col)

        if row != maxRow:
            island(board,row+1,col)

        if col != maxCol:
            island(board,row,col+1)

        if col != 1:
            island(board,row,col-1)






результаты из кода, размещенного выше, просто очистят всю доску, работая так, как текущий код должен

Ожидаемые результаты, когда поле, такое как строка 4, столбец 2,

     1 2 3 4 5 6 7 8 
   # # # # # # # # # #
 1 # . . . . . . . . #
 2 # 1 1 1 1 . . . . #
 3 #       2 . . . . #
 4 #     1 . . . . . #
 5 #     1 . . . . . #
 6 #     1 . . . . . #
 7 #   1 . . . . . . #
 8 # 1 1 . . . . . . #
   ###################

фактические результаты при воспроизведении строки 4, столбца 2;

        1 2 3 4 5 6 7 8 
     # # # # # # # # # # 
  1  #                  #
  2  #                  #
  3  #                  #
  4  #                  #
  5  #                  #
  6  #                  #
  7  #                  #
  8  #                  #
     # # # # # # # # # #

1 Ответ

0 голосов
/ 10 мая 2019

Вы только двигаетесь вверх и влево в заливе.Вам также нужно двигаться вниз и вправо.

    if row != max_row: # Look down
        island(board,row+1,col)
    if col != max_col: # Look right
        island(board,row,col+1)
...