私は swi-prolog を使用して、人々に姓または名をランダムに尋ね、入力内容に基づいて「正しい」または「正しくない」を出力するプログラムを作成しようとしています。現在の正解は「Hello」と「World」ですが、ユーザーが何を入力しても、出力は false であり、正解/不正解は出力されません。
start:-(Q=['What is your first name?','What is your last name?'],
random_member(N,[0,1]),
nth0(N,Q,X),
writeln(X)),
readln(S),
check_answer(N,S).
check_answer(N,S):-A=['Hello','World'],
nth0(N,A,X),
writeln(X),
(S=@=X)->writeln('correct'),
not(S=@=X)->writeln('incorrect').
後で次のように編集しました。
start:-(Q=['What is your first name?','What is your last name?'],
random_member(N,[0,1]),
nth0(N,Q,X),
writeln(X)),
read(S),
check_answer(N,S).
check_answer(N,S):-A=['Hello','World'],
nth0(N,A,X),
writeln(X),
writeln(S),
((S=@=X))->writeln('correct') ; writeln('incorrect').