Отказ от ответственности: Я почти полностью знаком с clingo и отвечаю на множество заданий в целом.Решение головоломки логики с программированием ответа.
Я пытаюсь решить grid logic puzzle используя clingo. Для начала я хочу создать все модели, которые включают один экземпляр каждой категории.
Например, если есть три человека: person(a; b; c).
, три дома: house(w; x; z).
, и три цвета: color(r; g; y).
Я хотел бы один потенциал стабильная модель будет assign(a, r, x), assign(b, g, z), assign(c, y, w)
и другой потенциал стабильной модели assign(a, g, w), assign(b, y, z), assign(c, r, x)
и т. д. То есть каждый человек появляется ровно один раз и аналогично для цветов. Я полагаю, что как только у меня появятся эти модели, я могу использовать ограничения для устранения моделей, пока головоломка не будет решена.
Я попытался с помощью правила выбора и ограничения:
{assign(P, C, H)} :- person(P), color(C), house(H).
P1=P2 :- assign(P1, C, H), assign(P2, C, H).
Но это не совсем масштабируемой для больших головоломок со многими переменными. Может ли кто-нибудь посоветовать лучший способ сделать это?
Вы должны изменить свой заголовок. ASP может ссылаться на активные серверные страницы, тема с высокой нагрузкой на переполнение стека. – Tony
Вы используете ';' в 'people' и' house', но используете '' '' 'для' color', который сильно отличается. Посмотрите, что дает вам 'clingo -text'. –