Здравствуйте моя задача, чтобы поменять элементы списка с индексом, который должен быть заменен в другом списке, так что Fx:обменивать элементы на основе индекса заданного из другого списка
Если у меня есть:
[3,1,2] as the list
А:
[[1,2],[2,3]] as the index that needs to be swapped
Затем он должен идти, как:
[1,2] = 3 and 1 getting swapped
[2,3] = 3 and 2 getting swapped
Так я бы в конечном итоге с выходом = [1,2,3]
предикат задается быть таким:
swap(C,Input,Output)
Где C является перечень которых elemenst, который должен быть заменен.
Ввод - это список, который следует поменять местами.
Выход - это список замененных.
Я хотел бы несколько советов о том, как замене этих элементов, основанных на этом, я уже смотрели на это: swap two elements from list with specified indices
Надеется, что кто-то может помочь мне с этим.
Edit:
До сих пор я пытался что-то вроде этого:
swap(Input,[I|J], Input) :-
I = J.
swap(Input, [I|J], Output) :-
swap(Input, [I|J], Output, _, _).
swap(Input, [I|J], Output) :-
swap(Input, J, I, Output, _, _).
swap([E2|Ls], I, 0, [E1|Ls], E1, E2):-!.
swap([E1|Es], 0, J, [E2|Rs], E1, E2) :-
N2 is J - 1,
swap(Es, -1, N2, Rs, E1, E2),!.
swap([E|Es], [I|J], [E|Rs], E1, E2) :-
N1 is I - 1,
N2 is J - 1,
swap(Es, N1, N2, Rs, E1, E2).
Но я могу использовать только «один» список в качестве индексов, что это должен быть заменен, как [ 1,2], то, что я ищу, - это использовать несколько таких, как [[1,2], [2,3]] и т. Д.
Пожалуйста, покажите, что вы пробовали до сих пор. –
Сообщение отредактировано с тем, что я пробовал сейчас. – VHdk