все! У меня возникли проблемы с поиском всех позиций вхождения элемента минимума в списке.Пролог найти все должности в списке минимального элемента
Мой исходный код выглядит так:
**
findPos([], _, []).
findPos([_],_,[1]).
findPos([H1|Tail], Pos, [Pos|Ta]):-
% "Pos" is the current position in the list
findMin([H1|Tail], V),
V=[H1],
Pos2 is Pos+1,
findPos([Tail], Pos2, [Ta]).
findPos([H1|Tail], Pos, [Ta]):-
findMin([H1|Tail], V),
not(V=[H1]),
Pos2 is Pos+1,
findPos([Tail], Pos2, [Ta]).**
где findMin получает в качестве первого аргумента список и возвращается с использованием второго параметра, минимальный элемент этого списка , Проблема в том, что каждый входной список, который я бы дал (за исключением void, для которого ответ был []), ответ всегда 1 ... и я не вижу, что мне не хватает. Любой ответ будет оценил: D Спасибо!
пожалуйста отступ вашего кода правильно. –
Извините, я новичок в этом -stack overflow-thing ...: D. – Nelly
Вы можете использовать комбинацию 'msort/2',' nth1/3' и 'findall/3'. Три шага, и у вас есть свой ответ. :) – lurker