Мне нужно найти позицию элемента в списке (как встроенный предикат nth, но здесь первый элемент имеет индекс 1). Но мне также нужен вывод типа «Элемент отсутствует», если нет.
Я пытаюсь найти решение, не столь элегантное, присваивая большое значение counter.
Но это не правильное решение !!!
Боюсь, это очень легко, но я не могу найти другое решение !!!
Может кто-нибудь мне поможет?
search(L):-
write('searching for: '),read(E),find(L,E,Pos),
out(L,E,Pos),!.
out(E,Pos):-
Pos < 10000,
write('element '),write(E),write(' is in position n. '),write(Pos),!.
out(E,Pos):-
Pos > 10000,
write('Element '),write(E),write(' is not present!'),!.
find([X|Xs],E,Pos):-
X \= E,
find(Xs,E,Pos1),
Pos is Pos1 + 1.
find([],_,10000).
find([X],X,1).
find([X|_],X,Pos):-
Pos is 1,!.