-4
我想定義問題中的初始狀態。 我的代碼是檢查序言中的輸入號碼
isDigit(X) :- (number(X),
X >= 0,
X =< 8
); (writeln('[0-8] AND Number'),!,fail).
define_initial_state(INITIAL_STATE) :- write('Pos (1,1):'),
read(A11),
isDigit(A11),
write('Pos (1,2):'),
read(A12),
isDigit(A12),
write('Pos (1,3):'),
read(A13),
isDigit(A13),
write('Pos (2,1):'),
read(A21),
isDigit(A21),
write('Pos (2,2):'),
read(A22),
isDigit(A22),
write('Pos (2,3):'),
read(A23),
isDigit(A23),
write('Pos (3,1):'),
read(A31),
isDigit(A31),
write('Pos (3,2):'),
read(A32),
isDigit(A32),
write('Pos (3,3):'),
read(A33),
isDigit(A33),
INITIAL_STATE = state(row1(A11,A12,A13), row2(A21,A22,A23),row3(A31,A32,A33)).
start :- define_initial_state(INITIAL_STATE),
write(INITIAL_STATE).
我的問題是印刷多次消息 例如
1 ?- start.
Pos (1,1):4.
Pos (1,2):2.
Pos (1,3):11.
[0-8] AND Number
[0-8] AND Number
[0-8] AND Number
false.
此外,我想檢查,如果一個號碼已經給出,如果是問再次爲這個數字。
謝謝您的回答, 它的工作原理,但它是可怕的 另外,我不;知道我怎能要求用戶輸入錯誤的情況下 嘗試另一個號碼。 ISDIGIT(X): - (數(X), X> = 0, X = <8 - >真 ; writeln( '[0-8]和號碼'), 失敗)。 check_if_exists(Num,List): - (member(Num,List) - > true ; writeln('Num exist already'))。 \t \t \t \t \t \t \t \t \t delete_one(ELEM,[ELEM |尾],尾)。 delete_one(ELEM,[杆頭| Tail1],[頭| Tail2]): - \ +(ELEM =頭), delete_one(ELEM,Tail1,Tail2)。 – user494766 2011-12-18 17:53:40
define_initial_state(INITIAL_STATE): - L = [0,1,2,3,4,5,6,7,8], 寫(的POS(1,1):'), \t \t \t \t \t \t \t讀取(A11), \t \t \t \t \t \t \t ISDIGIT(A11), \t \t \t \t \t \t \t \t \t delete_one(A11,L,L1), \t \t \t \t \t \t \t寫(的POS(1,2):'), \t \t \t \t \t \t \t讀取(A12), \t \t \t \t \t \t \t ISDIGIT(A12),\t \t \t \t (A12,L1), delete_one(A12,L1,L2), (\t \t \t \t \t \t \t \t ... \t \t \t \t \t \t \t \t \t INITIAL_STATE =狀態(ROW1(A11,A12,A13),ROW2(A21,A22,A23),ROW3(A31,A32, A33))。 \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t 開始: - define_initial_state(INITIAL_STATE), 寫(INITIAL_STATE)。 – user494766 2011-12-18 17:55:21
編輯您的OP請發佈代碼,在評論中無法閱讀......以及我的回答有什麼可怕的? – m09 2011-12-18 17:55:39