2012-03-24 4 views
2

У меня есть некоторые проблемы с решением головоломки. Я не нашел решения для этой головоломки в любом месте, но я попытался написать ее в Prolog, но я думаю, что мое решение не будет быстрым (я генерирую каждое решение и удаляю их, если они невозможны или правильны). Это моя проблема: (я нашел название этой головоломки, вот ссылка со всеми правилами этой головоломки: http://en.wikipedia.org/wiki/Kuromasu). Теперь у меня другой вопрос, какой метод будет довольно легко писать и довольно быстро решить его в Prolog. Я думал о преобразовании моего списка полей в неориентированный граф, или, может быть, есть еще один метод для поиска моего списка по вертикали (голова за головой)?Решение логической головоломки (Куромасу, где черные клетки) в Прологе

В:

0, 0, 0, 5, 0, 0, 0 
0, 5, 0, 0, 0, 0, 2 
0, 0, 0, 0, 7, 0, 4 
0, 0, 0, 0, 0, 0, 0 
8, 0, 13,0, 0, 0, 0 
5, 0, 0, 0, 0, 6, 0 
0, 0, 0, 8, 0, 0, 0 

Результат:

0, #, 0, 5, 0, 0, # 
0, 5, 0, 0, 0, #, 2 
0, #, 0, #, 7, 0, 4 
#, 0, 0, 0, 0, 0, # 
8, 0, 13,0, 0, 0, 0 
5, 0, 0, 0, #, 6, 0 
#, 0, 0, 8, 0, 0, # 
+0

У вас есть имя или ссылка для головоломки? Название не очень хорошее. –

+0

Я попытался найти название этой головоломки, но я не знаю. Как я могу изменить заголовок, чтобы сделать его более понятным? –

+0

Название головоломки было бы началом :-) «Решение XYZ в Prolog?» где XYZ - название головоломки или архетип головоломки. –

ответ

4

Этот тип головоломок называется Kuromasu. Вот страница, которая решает ее с помощью ограничений SWI-Prolog и конечных доменов: http://jfoutelet.developpez.com/articles/kuromasu/

+1

Большое спасибо, эта информация очень полезна. Но есть еще одна проблема, я не понимаю французский, и я думаю, я не могу использовать #_ как предикаты. –