2016-04-05 11 views
-2

X = [1, 2, 3, 4, 6, 7]のようなPrologのリストを持っている場合、要素5をリストに追加してX = [1, 2, 3, 4, 5, 6, 7]にするにはどうすればよいですか?Prolog - リストに要素を挿入する方法

+2

これを解決するために行った試みを示してください。 – lurker

+0

挿入操作後にリストをソートする必要がありますか? – whd

答えて

0

第一パラメータ: "新しい" 要素

第二パラメータ:オールド・リスト

3番目のパラメータ: "新" の要素を持つ新しいリスト

addElement(X, [], [X]). 
addElement(X, [Y | Rest], [X,Y | Rest]) :- X @< Y, !. 
addElement(X, [Y | Rest1], [Y | Rest2]) :- addElement(X, Rest1, Rest2). 

使用例:

?- addElement(5,[1,2,3,4,6,7], X). 
X = [1, 2, 3, 4, 5, 6, 7]. 

?- addElement(5,[1,2,3,4,6,7], [1,2,3,4,5,6,7]). 
true. 

?- addElement(5,[1,2,3,4], [1,2,3,4,5]). 
true . 

?- addElement(5,[1,2,3,4], [1,2,3,5]). 
false. 

?- addElement(5,X, [1,2,3,5]). 
X = [1, 2, 3] ; 
+0

出力を取得できません。 addElement [5、[1,2,3,4]、[6,7])。 – Priyaranjan

+1

このコードで質問に答えるかもしれませんが、_why_および/または_how_に関する追加の文脈を に入力すると、 という質問に回答すると、長期的には 値が大幅に改善されます。あなたの答えを[編集]して、説明を加えてください。 –

+1

@Priyaranjanクエリに対して 'false'以外の何らかの結果が予想される場合は、元の質問を明確にする必要があります(editを使用)。addElement(5、[1,2,3,4]、[ 6,7])。 – lurker

0

SortedListはあなたが探している結果になります。

append([1,2,3,4,6,7], [5], Z), sort(Z, SortedList). 
関連する問題