Неправильное определение первого элемента списка - Prolog
Формулировка задачи:
Добрый день!
Есть задачка.Почти правильная!
Условие:
Реализовать процедуру для определения первого элемента списка (в учет принимаются списки всех уровней). Пример: в списке [[[s,a],b],c,[e,[f,[[g,e,p],v],y]],x] первый элемент s.Вот что я делаю:
вот что выводит,все хорошо:
Но есть проблема если исправить список значений на:
то выводит немного не правильно:
и так до бесконечности
Следующий шаг должен вывести "No".
Решение задачи: «Неправильное определение первого элемента списка»
textual
Листинг программы
first([],[]):-write("Null!"). first([H],H):-atom(H). first([H|_],R):-first(H,R),atom(R),!. first([H|_],R):-first([H|T],R). first1([H|_], X) :- nonvar(H), H = [_|_], first1(H, X). first1([H|_], H) :- nonvar(H), not( H = [_|_] ). first2([H|_], H) :- var(H), !. first2([H|_], X) :- H = [_|_], first2(H, X). first2([H|_], H) :- not( H = [_|_] ). ?-first([s,a,b],R),write(R),nl.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д