Цитата(setq @ 25.4.2007, 14:35 ) | | Prolog'а не знаю, но наверно там должна быть рекурсия наподобие "список -- палиндром, если первый и последний элементы равны и всё что между ними тоже палиндром (или пустой список)". |
Угу, именно так.
masta,
| Код | конкатенация([],Ys,Ys). конкатенация([X|Xs],Ys,[X|Zs]):- конкатенация(Xs,Ys,Zs).
палиндром([]). палиндром([_]). палиндром([X|Xs]):- конкатенация(Ys,[X],Xs), палиндром(Ys).
|
Или если в твоей Пролог-системе есть встроенный предикат append, то можно короче:
| Код | палиндром([]). палиндром([_]). палиндром([X|Xs]):- append(Ys,[X],Xs), палиндром(Ys).
|
а если твой Пролог не понимает русских названий предикатов, то перепиши "палиндром" латинскими буквами.
Проверяю на своем Прологе (swi-prolog):
| Цитата | ?- палиндром("арозаупаланалапуазора"). Yes ?- палиндром("простослово"). No ?-
|
|