列表的序言反向前面的成员
Prolog reverse front members of a list
在 Prolog 中,我必须根据数字(列表成员)反转列表的一部分,直到列表被反转。
例如:
?- reverse_front(2,[3,2,4,1,5,6],L)。
L=[2,3,4,1,5,6]
将数字2(包括2)之前的列表反转,然后追加到剩余列表...
?- reverse_front(4,[9,3,2,4,1,5],L)。
L = [4,2,3,9,1,5]
?- reverse_front(1,[3,2,4,1,6,5],L)。
大号 = [1,4,2,3,6,5]
解决方案可以使用 reverse/2 和 append/3。
你知道怎么做吗?
是的,您可以使用 reverse/2
和 append/3
来实现。
像这样:
reverse_front(Item, List, NList):-
append(L1, [Item|L2], List),
reverse(L1, RL1),
append([Item|RL1], L2, NList).
样本运行:
?- reverse_front(4,[9,3,2,4,1,5],L).
L = [4, 2, 3, 9, 1, 5] ;
false.
?- reverse_front(1,[3,2,4,1,6,5],L).
L = [1, 4, 2, 3, 6, 5] ;
false.
在 Prolog 中,我必须根据数字(列表成员)反转列表的一部分,直到列表被反转。 例如:
?- reverse_front(2,[3,2,4,1,5,6],L)。 L=[2,3,4,1,5,6]
将数字2(包括2)之前的列表反转,然后追加到剩余列表...
?- reverse_front(4,[9,3,2,4,1,5],L)。 L = [4,2,3,9,1,5]
?- reverse_front(1,[3,2,4,1,6,5],L)。 大号 = [1,4,2,3,6,5]
解决方案可以使用 reverse/2 和 append/3。
你知道怎么做吗?
是的,您可以使用 reverse/2
和 append/3
来实现。
像这样:
reverse_front(Item, List, NList):-
append(L1, [Item|L2], List),
reverse(L1, RL1),
append([Item|RL1], L2, NList).
样本运行:
?- reverse_front(4,[9,3,2,4,1,5],L).
L = [4, 2, 3, 9, 1, 5] ;
false.
?- reverse_front(1,[3,2,4,1,6,5],L).
L = [1, 4, 2, 3, 6, 5] ;
false.