Вот описание программы пролога, над которой я работаю:
пользователь может ввести 5-буквенное слово, и допускаются только буквы a, b, c, d, e. Он может не вводить все слова, поэтому он может вводить что-то вроде userWord (A, b, C, d, E) - поэтому заполняются только b и d. Эти буквы можно вводить в любом порядке. Я должен заставить это работать, не используя списки или функции и используя только обоснованные факты.
Вот что у меня есть:
values(a,b,c,d,e).
userWord(U,W,X,Y,Z):-
values(A1,A2,A3,A4,A5),
findletters(U,W,X,Y,Z,A1,A2,A3,A4,A5). % U-Z are outputs and A1-A5 are inputs
findletters(A1,A2,A3,A4,A5,A1,A2,A3,A4,A5):-
findletters(A2,A1,A3,A4,A5,A1,A2,A3,A4,A5).
Мне нужно иметь findletters, который меняет порядок букв, пока не найдет хорошее совпадение. Конечно, мне может понадобиться несколько писем, которые по-разному меняют порядок. Но я не могу понять, как это сделать
- вызвать поисковики с возможными значениями
- запомните значения только a, b, c, d, e
- заставляет его принимать последний сгенерированный им ордер (который не удался), работает над этим и меняет ордера, пока не найдет хорошее совпадение.
Любая помощь чрезвычайно ценится