Здесь проблема игрушек:
A (roguelike) 2D-карта состоит из квадратных ячеек, каждая из которых имеет материал (камень или воздух).
Каждая ячейка имеет четыре границы (N, S, E и W). Каждая граница разделяется двумя ячейками.
Граница может необязательно содержать "стенную особенность", только если одна сторона представляет собой камень и другой воздух.
(Функции стены могут быть рычагами, изображениями, кнопками и т.д.)
В каком дизайне Алгебраических данных может быть место для хранения функции стены только тогда, когда одна сторона является скалой и другим воздухом? то есть структура данных не может представлять функцию стенки на границе между двумя воздушными ячейками или двумя ячейками горных пород.
Один из подходов, который я пробовал, - это XORing шаблон шахматной доски по значениям ячеек, изменение изменений и изменение.
Я держу себя в узлах из-за того, что между ячейками существует несколько эквивалентных маршрутов - SSW - это то же самое, что и SWS (версия 1D этого вопроса тривиальна).
(Я признаю, что представление ADT не будет особенно "queriable".)
Обновление с неудачной попыткой:
Назовите восточные границы E и южные границы S. Пусть каждая граница будет либо Same
, либо Diff Feature
. Проблема с этим подходом заключается в том, что он позволяет создавать несовместимые маршруты, например:
E<0,0> Same
S<1,0> Same
S<0,0> Same
E<0,1> Diff
Есть ли математическое имя для обозначения того, что разные маршруты должны объединяться в одну и ту же сумму?
Можно сказать, что Same равно 1, а Diff - -1, и этот продукт по каждому маршруту между любыми двумя ячейками должен быть равен (1 или -1).