Неправильное определение первого элемента списка - 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы