所以我有一個任務,我必須做一個猜謎遊戲(bulls and cows)。 首先,我讓我輸入兩個數字的小程序,如果他們有相同的長度,然後他們是否相等,它會檢查 。 *數字有有列表中,爲了能夠在每個猜測中公牛和奶牛的數量(見遊戲規則)。序言 - 奇怪的問題
equal([],[]).
equal([Ha|Ta],[Hb|Tb]) :-
Ha = Hb, equal(Ta,Tb).
check_length(List1,List2):-
same_length(List1,List2),writeln('The Lists have the same length!').
check_equality(List1,List2):-
equal(List1,List2),writeln('The Lists are equal!').
start:-
write('give 1st list:'), read(X),atom_chars(X, List1),
write('give 2nd list:'), read(Y),atom_chars(Y, List2),
check_length(List1,List2),
check_equality(List1,List2).
到目前爲止好。它工作正常。然後我繼續下一步並對其進行更改,因此它會生成一個包含4個隨機整數的列表,然後等待用戶進行猜測並像以前一樣比較兩個列表。 *顯然我將生成的數字打印到屏幕上,以便知道程序是否正常工作。
start:-
A is random(9),
B is random(9),
C is random(9),
D is random(9),
List2=[A,B,C,D],
write('Generated number:'),writeln(List2),
write('Make a guess:'), read(Guess),atom_chars(Guess, List1),
nl,
check_length(List1,List2),
check_equality(List1,List2).
的問題是,即使您鍵入正確的數字這段時間,程序沒有弄清楚,如果列表(數字)具有相同的長度,但在平等檢查失敗。 我在做什麼錯?
在此先感謝。