Я хотел бы определить начальное состояние в задаче.
Мой код
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.
Также я хотел бы проверить, задан ли уже номер, и если да, спросить еще раз этот номер.