Re: проверка списка на prolog
От: palm mute  
Дата: 18.03.07 17:29
Оценка: 3 (1)
Здравствуйте, fsssl_dm, Вы писали:

_>Есть небольшое задание: написать предикат проверки списка. Список имеет следующий вид:

_>
_>[a,a,a,a,…,a,b,…,b]
_>

_>Предполагается использование Arity Prolog, но, наверное, это не имеет особого значения.

Честно говоря, не совсем понятно, что нужно сделать, под вид [a,a,a,a,…,a,b,…,b] можно подогнать много ограничений (например, список заканчивается чередующейся последовательностью a,b,a,b,a,...). Если телепатия меня не подвела, и список должен начинаться с непустой последовательности элементов X любой длины, а заканчиваться непустой последовательностью элементов Y любой длины, причем X<>Y, то можно так (работает на SWI-Prolog. DISCLAIMER: на Прологе и пишу крайне редко и не более 10 строчек, код предоставлен AS IS):
many(X, [], []) :- nonvar(X).
many(X, [Y|Ys], [Y|Ys]) :- nonvar(X), not(X=Y).
many(X, [X|Xs], Ys) :- many(X, Xs, Ys).


check(Xs) :- many(X, Xs, Ys), many(Y, Ys, []), not(X=Y).


_>P.S. Никак не могу забыть про императивный стиль программирования.

Это просто, надо просто не думать о белой обезьяне
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.