Prolog列表的反向前端成员



在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,5],L(。L=[4,2,3,9,1,5]

?-reverse_front(1,[3,2,4,1,6,5],L(。L=[1,4,2,6,5]

该解决方案可以使用reverse/2和append/3来完成。

你知道怎么做吗?

是的,您可以使用reverse/2append/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.

最新更新