TypeError при запуске алгоритма bfs в Python - PullRequest
0 голосов
/ 24 сентября 2019

Итак, вот код, который я запускаю, и он дает мне ошибку TypeError.Я пытаюсь пройти 2-мерный массив и затем возвращаю путь от начальной точки к целевой точке.

Я применил поиск в обход шириной для обхода пути, но кажется, что с алгоритмом что-то не так.

class Grid:
    def __init__(self, str1):
        self.maze = str1.splitlines()

    def get_start_cordinates(self):
        rr = 0
        cc = 0
        return rr, cc

    def main(self, r, c):
        queue = []
        visited = {}
        visited[(r, c)] = (-1, -1)
        queue.append((r, c))
        while len(queue) > 0:
            r, c = queue.pop(0)

            if r == 4 and c == 2:
                path_actual = []
                while r != -1:
                    path_actual.append((r, c))
                    r, c = visited[(r, c)]
                path_actual.reverse()
                return path_actual

            # avoid repetition of code: make a loop
            for dx, dy in ((-1, 0), (0, -1), (1, 0), (0, 1), (1, 1), (1, -1), (-1, 1), (-1, -1)):
                new_r = r + dy
                new_c = c + dx
                if (0 <= new_r < len(self.maze) and
                        0 <= new_c < len(self.maze[0]) and
                        not (new_r, new_c) in visited):
                    visited[(new_r, new_c)] = (r, c)
                    queue.append((new_r, new_c))


maze = Grid("""1 12 2 0 0
2 11 1 11 0
3 2 -1 9 0""")

path = Grid.main(*Grid.get_start_cordinates())
print(path)

Это ошибка, которую я получаю:

path = Grid.main (* Grid.get_start_cordinates ())

TypeError: get_start_cordinates () отсутствует 1 обязательный позиционный аргумент:'я'

1 Ответ

1 голос
/ 24 сентября 2019
path = maze.main(*maze.get_start_cordinates())

используйте созданный вами объект, а не класс.

...