所以我正在嘗試一些東西。我有以下簡單斷言:我該如何修改我的謂詞來混亂我的輸出結果?
insert([],Y,[Y]).
insert([H|T],Y,[H,Y|T]).
所以這將插入我的元素Y
進入我的列表。然而,這總是將它放在中間的同一個地方。但說我希望它更像以下幾點:
?- insert([1,2,3], 4, Zs).
應該成功四次,並給出以下答案:
Zs = [4, 1, 2, 3]
Zs = [1, 4, 2, 3]
Zs = [1, 2, 4, 3]
Zs = [1, 2, 3, 4].
我怎麼會相應地修改我的斷言?
根據規則可能會發生什麼想法並根據簡單案例和非重疊遞歸案例來思考是很好的。然後轉換爲Prolog ...(1)將'Y'插入到列表'L'中是以'Y'爲頭部,'L'作爲尾部(休息)的列表,並且(2)將'Y'插入列表中的[H | T]爲[H | R],其中'R'爲插入列表'T'的列表'T'。 – lurker