Отключение TLS 1.0, влияющее на безопасную связь

Подталкивание: вы находите индексы, но вы их не собираете.

indices(List, E, Is) :-
    indices_1(List, E, Is, 1).

Для пустого списка список индексов пуст, и элемент не имеет значения

indices_1([], _, [], _).

Если элемент похож на голову, соберите индекс.

indices_1([E|Xs], E, [I|Is], I) :-
    I1 is I + 1,
    indices_1(Xs, E, Is, I1).

Для этого требуется другое условие.

EDIT:

. Один из способов сделать это:

indices_1([X|Xs], E, Is, I) :- dif(X, E),
    I1 is I + 1,
    indices_1(Xs, E, Is, I1).

В предыдущем пункте глава списка и Элемент унифицированы. В этом пункте они явно различны. Это означает, что только одно из двух предложений может быть истинным для элемента списка в первом аргументе.

EDIT:

Другой способ сделать это - использовать findall и nth1:

indices(List, E, Is) :-
    findall(N, nth1(N, List, E), Is).
0
задан DrGriff 13 July 2018 в 14:09
поделиться