Обобщенный решатель кроссвордов в Прологе

Вот проблема и специализированная версия решения. Изучение Пролога: решение схемы кроссвордов

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

Под обобщенным решателем я подразумеваю решатель, способный решать N кроссвордов N, N НЕ предопределено.

1 ответ

Решение

В Прологе есть много забавных способов генерировать имена переменных на лету. Вот довольно простой:

?- length(X, 3).
X = [_G945, _G948, _G951].

Это работает, потому что length/2 реализован для обхода списка, но на самом деле он не устанавливает привязки к вещам в списке. Вы можете сделать что-то подобное с любой другой структурой данных, обходя структуру без проверки значений, содержащихся в ней. Некоторые книги по Прологу называют это "структурами данных с дырами".

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