решение 8 задач головоломки с BFS DFS (Использование Python. Нуждается в некоторых предложениях) - PullRequest
0 голосов
/ 15 февраля 2019

Мое окончательное состояние

0 1 23 4 56 7 8

мой график будет выглядеть так

graph = {0 :[1, 3],
         1 :[0, 4, 2],
         2 :[1, 5],
         3 :[0, 4, 6],
         4 :[1, 3, 5, 7],
         5 :[2, 4, 8],
         6 :[3, 7],
         7 :[4, 6, 8],
         8 :[5 ,7]
        }

1 - мне было интересно, стоит ли мне попробовать какие-то другие методы, такие как list, если оператор else, кроме graph (см. Выше).2 - Что-то не так с графиком?Заданная проблема -

Пример [1,5,3,2,0,4,7,8,6] <- больше похоже на это1 5 32 0 47 8 6</p>

Я должен найти конечное состояние с данным состоянием

Спасибо

1 Ответ

0 голосов
/ 16 февраля 2019

Итак, есть 4 угловых случая:

  • Верхний ряд
  • Нижний ряд
  • Самый левый столбец
  • Самый правый столбец

(И комбинации)

Мы можем легко с ними справиться, как это:

data = [1, 5, 3,
        2, 0, 4,
        7, 8, 6]

width = 3
height = 3

graph = {number: list() for number in data}

for idx, number in enumerate(data):
    current_height = int(idx / width)
    current_width = idx % width

    if current_width != width - 1:  # if next element in same row
        graph[number].append(data[idx + 1])

    if current_width != 0:  # if prev element in same row
        graph[number].append(data[idx - 1])

    if current_height != 0:  # if there is top element
        graph[number].append(data[idx - 3])

    if current_height != height - 1:  # if there is bottom element
        graph[number].append(data[idx + 3])

import pprint
pprint.pprint(graph)

Этот код создаст график, но это все для этой загадки?.

...