2009-12-19 94 views
4

我需要的关系在序言转移列表中一个元素,使得Prolog中的关系转移元素左旋转

?shift([1,2,3],L) 

应该产生

L=[2,3,1]. 

你能帮助我离开旋转?

+0

你可以说你已经尝试了什么,你用你写的代码有什么问题? – 2009-12-19 03:20:32

+0

@vincent 我能够写得很少,之后我就没有任何想法。 移位(列表L): - 移位(尾部,L1) – nan1 2009-12-19 03:25:00

+0

您可以说您已将第一个元素从列表的前面移除并将其添加到最后? :-) – Joel 2009-12-19 03:32:43

回答

6

可以使用附加命令列表的元素结合在一起:

shift([H|T], Y) :- 
    append(T, [H], Y). 

所以只需附加的尾巴一起头(按顺序),并设置Y到新创建的列表。请注意,由于H是一个元素,而不是一个列表,因此您必须将其与[]包围,以使其成为append函数中的列表。

另外,在Prolog中使用列表的here's a good basic overview