2015-09-26 32 views
0

我目前使用tkEclipse爲我的序言,我目前卡住在這個問題。序言,找到最小數字,如果沒有語句

給定一個項目的基本案例與他們的名字和數字,我需要能夠找到最小的數字,而不使用規則,如if語句。 例如。 anime(gundam, 1978)anime(steins_gate, 2011)anime(prison_school, 2015)。答案會說gundam是最小的數字。這不能被硬編碼,因爲如果你要改變知識庫,那麼它也應該改變答案。另外,如果知識庫中只有兩個動畫,它應該可以工作。

我想大概是這樣開始:

anime(X, Y),因爲不允許使用​​,Y < B,但事情後變得棘手: -

+2

也許' - 動漫(X,Y),\ +(動漫(U,V),V> Y))' – CapelliC

+0

嗨,我認爲這是正確的解決方案。但我很難理解\ +的用法?可以「不」替換\ +? (X,Y),not(anime(U,V),V> Y)) – GreatShark

+3

yes,(\ +)/ 1是現代名稱not/1 – CapelliC

回答

0
findall(N, anime(A, N), S), 
setof(X, member(X,S), [Min|_]). 

,或者在一個行:

setof(N, A^anime(A, N), [Min|_]). 
+2

爲什麼不直接'? - setof(X, P^anime(P,X),[Min | _])。 – CapelliC

+0

@CapelliC - 我選擇了雙線答案,因爲它很容易理解,而「P ^」則不那麼明顯。 – peak

+1

@CapelliC暗示不這樣做。 – 2015-09-28 08:50:25