Чтобы перейти к следующей букве в слове факт , вам нужно сделать слово из факта третьим аргументом и взять его с собой для поездки.В вашем mistake_letter/2
вы будете выбирать слова одно за другим и вызывать mistake_letter/3
, передавая выбранное вами слово, например:
mistake_letter(L1,L2):-
word(W),
mistake_letter(L1,L2,W).
. Вам нужно изменить базовый вариант насделать что-то, когда буквы в исправляемом слове заканчиваются перед буквами слова, которое вы выбрали.То, что вы делаете, зависит от вашего задания: вы можете откатить mistake_letter([],[],[]).
, объявить совпадение mistake_letter([],[],_).
, присоединить хвост слова к исправлению mistake_letter([],W,W).
или сделать что-то еще.
Вам также нужен простой случайситуация, когда первая буква исправляемого слова совпадает с первой выбранной вами буквой слова:
mistake_letter([X|L1],[X|L2],[X|WT]):-
mistake_letter(L1, L2, WT).
Наконец, вам нужен самый важный случай: что делать, если начальные буквы не совпадают,Это, вероятно, основная часть вашего задания: остальное - просто шаблонная рекурсия.Чтобы сделать это правильно, вам может потребоваться изменить mistake_letter/3
на mistake_letter/4
, чтобы иметь возможность вычислить количество совпадений, а затем сравнить его с количеством букв в исходном слове.Это позволит вам отбросить «исправления», такие как [w,o,r,l,d]
-> [h,e,l,l,o]
, поскольку в них есть только 20% совпадающих букв.