Получить N max номеров из списка < int > используя лямбда-выражение

Вы можете использовать append / 2 следующим образом:

replace(ToReplace, ToInsert, List, Result) :-
    once(append([Left, ToReplace, Right], List)),
    append([Left, ToInsert, Right], Result).

С использованием или без использования один раз / 1 в зависимости от того, хотите ли вы все возможности или нет.

Для замены все случаи, в которые я бы пошел, с чем-то вроде:

replace(ToReplace, ToInsert, List, Result) :-
    replace(ToReplace, ToInsert, List, [], Result).
replace(ToReplace, ToInsert, List, Acc, Result) :-
    append([Left, ToReplace, Right], List),
    append([Acc, Left, ToInsert], NewAcc),
    !,
    replace(ToReplace, ToInsert, Right, NewAcc, Result).
replace(_ToReplace, _ToInsert, [], Acc, Acc).
16
задан Kirill Polishchuk 31 July 2012 в 20:30
поделиться