我正在通過learnprolognow學習Prolog。目前我在第四章,並且卡在the second exercise上。Prolog - combine2如何防止在末尾添加空列表
「現在寫一個3元謂詞combine2這需要三個列表作爲參數,並結合了前兩個列表的元素融入到第三如下:
?- combine2([a,b,c],[1,2,3],X).
X = [[a,1],[b,2],[c,3]] "
我的實現是:
combine2([],[],[]).
combine2([H1|T1],[H2|T2],[[H1,H2],R]):-
combine2(T1,T2,R).
以上壽查詢的結果是:
X = [[a, 1], [[b, 2], [[c, 3], []]]] ;
我不知道如何重新編寫它,所以在最後一步,程序不會添加空列表。我接受建議/提示/解決方案。
謝謝,祝你有個愉快的週日!
謝謝!是的,這是完全合理的。 – InDaPond
我只是認爲在頭部只能有1個元素。那是不是真的?或者「one」元素也可以是一個變量? – InDaPond
Head是列表中的第一個元素,它是一個當前在列表中實例化的變量,例如子句combine2([H1 | T1],[H2 | T2],[[H1,H2],R])): -...用其他列表的已知頭H1,H2實例化頭元素[H1,H2](這是一個變量)。頭是一個元素,但是這個元素可能與你的情況類似於[H1,H2]形式的列表,或者在其他示例中可能是形式元素(H1,H2)或H1-H2並繼續。 ... – coder