2016-08-01 72 views
1

我需要幫助指出我的謂詞將出現錯誤的原因,以便將列表中的所有元素加倍。我對Prolog很陌生,很可能錯過了一些非常明顯的東西。基本上,我的謂詞應該包含一個列表(例如[1,2,3])並生成一個列表,其元素加倍([2,3,6])。將Prolog中的列表中的所有元素加倍

這是我到目前爲止有:

double_elements([], []). 
double_elements([H|T], Doubled_list):- 
    X is H*2, 
    append([X], Doubled_list, Doubled_list), 
    double_elements(T, Doubled_list). 

然而,我的代碼目前只輸出「假」無論我所付出的投入它。任何幫助,將不勝感激。

+0

去查查了'追加([X],Doubled_list,Doubled_list)'的文檔。你試圖將'[X]'附加到某個東西上,並用相同的東西來統一它。這總是會失敗。 – Enigmativity

+0

在Prolog中,不能在謂詞子句中更新相同的變量。 – lurker

回答

2

您試圖將[X]附加到某個內容,並將它與相同的內容統一起來。這總是會失敗。

試試這個:

double_elements([], []). 
double_elements([H|T], [X|Doubled_list]):- 
    X is H*2, 
    double_elements(T, Doubled_list). 
+1

@ lurker - 非常真實,赦免雙關語。 – Enigmativity