Как настроить и распечатать сетку в GNU Prolog

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

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

Система сетки, которую я хочу сделать с нуля, будет 4х4, и она должна распечатываться так, как это

(4,1) (4,2) (4,3) (4,4)

(3,1) (3,2) (3,3) (3,4)

(2,1) (2,2) (2,3) (2,4)

(1,1) (1,2) (1,3) (1,4)

Для комментариев

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

Это место, где я могу назначить квадрат (часть сетки), такой как (3,2), как яму, выпуклость или золото в любом из квадратов, которые я хочу, чтобы мой агент прошел эту сетку.

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

Если это не так, я буду признателен за любые отзывы.

1 ответ

Решение

Вы можете использовать список списков для представления вашей сетки
[[4,1,I41], [4,2,I42], ... [0,4,I04]]
где каждый подсписок имеет координаты и информацию о том, что находится в каждой ячейке.

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

Существует более сложный подход, если сетка большая, используя циклический термин (рациональное дерево) для представления сетки и "перемещения" в ней, с отдельным термином для содержимого сетки, которое переписывается, как указано выше.

Другие вопросы по тегам