Как сделать так, чтобы элементы не разделяли ребра в матрице - PullRequest
0 голосов
/ 30 октября 2018

В основном у меня проблема с вопросом, который имеет это описание:

Военно-морская битва ведется на прямоугольной доске с N рядами и M столбцами. Каждая позиция этой доски - это квадрат, который может содержать воду или часть корабля. Мы говорим, что два квадрата являются соседями, если они имеют одну общую сторону. Если две части корабля находятся в соседних позициях, то эти две части принадлежат одному и тому же кораблю. Правило игры запрещает, чтобы квадраты двух частей разных кораблей имели общий угол (другими словами, квадраты двух частей разных кораблей имеют общую вершину).

Я создал функцию, которая распознает корабли, но также распознает как один корабль корабли в углу. Вот моя функция: `def find_ships (строка, столбец, матрица, посещение):

if linha > 0 and matrix[line-1][column] == "#" and (line-1,column) not in visited: 

    visited.append(((line-1),column))
    find_ship(line-1, column, matrix, visited)

if linha < (len(matrix)-1) and matrix[line+1][column] == "#" and (line+1,column) not in visited: 

    visited.append((line+1,column))
    find_ship(line+1, column, matrix, visited)

if coluna > 0 and matrix[line][column-1] == "#" and (line,column-1) not in visited: 

    visited.append((line,column-1))
    find_ship(line, column-1, matrix, visited)

if coluna < (len(matrix[line])-1) and matrix[line][column+1] == "#" and (line,column+1) not in visited: 

    visited.append((line,column+1))
    find_ship(line, column+1, matrix, visited)`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...