制限時間内のキー入力検査
Posted feedbacks - Prolog
Windows上のSWI-Prologで動作確認.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | check_match(13, [], 'OK') :- put(10), !.
check_match(C, [C|S], Match) :-
get_single_char(C1), put(C1), !,
check_match(C1, S, Match).
check_match(_, _, 'NG') :- skip(10).
write_result(_, T1, T2, T) :-
T < T2 - T1, write('TIME OUT'), !.
write_result(Match, _, _, _) :- write(Match).
input_checker(T, S) :-
format('input(~s) => ', [S]),
get_single_char(C), put(C), get_time(T1),
check_match(C, S, Match), get_time(T2),
write('result => '), write_result(Match, T1, T2, T), nl.
:- input_checker(5, "ABCDEF"),
input_checker(4, "GHIJKLMN"),
input_checker(3, "OPQRSTUVWXYZ").
|


raynstard
#3420()
Rating0/2=0.00
関数 InputCheckerは、以下の仕様を満たしてください。
たとえば、「InputCheker(5, "ABCDEF")」と指定した場合、 出力例はこんな感じです。
1. input(ABCDEF) =>と出力して入力待ちをし、ユーザーが「ABCDEF<ENTER>」を入力したとき、 入力開始から5秒以内ならば「OK」、5秒をこえていれば「TIME OUT」を出力します。 このとき、ユーザーがキーを押下しなければ1. を出力してから たとえ10秒たっていても「TIME OUT」にはならないので注意してください。 時間計測はあくまでユーザーが入力を開始してからです。
このお題はraynstardさんの投稿です。ご協力ありがとうございます。
[ reply ]