Обобщенный решатель кроссвордов в Прологе
Вот проблема и специализированная версия решения. Изучение Пролога: решение схемы кроссвордов
Что я ищу, так это обобщенный решатель, использующий ту же модель. Я думаю, что мне нужно генерировать эти имена переменных на лету, но я не знаю как. Я использую swi-пролог.
Под обобщенным решателем я подразумеваю решатель, способный решать N кроссвордов N, N НЕ предопределено.
1 ответ
В Прологе есть много забавных способов генерировать имена переменных на лету. Вот довольно простой:
?- length(X, 3).
X = [_G945, _G948, _G951].
Это работает, потому что length/2
реализован для обхода списка, но на самом деле он не устанавливает привязки к вещам в списке. Вы можете сделать что-то подобное с любой другой структурой данных, обходя структуру без проверки значений, содержащихся в ней. Некоторые книги по Прологу называют это "структурами данных с дырами".