RosettaCodeData/Task/24-game/Picat/24-game.picat
2023-07-01 13:44:08 -04:00

30 lines
789 B
Text

import util.
main =>
play.
play =>
nl,
Digits = [random() mod 9 + 1 : _ in 1..4].sort(),
println("Enter \"q\" to quit"),
println("Enter \"!\" to request a new set of four digits."),
printf("Or enter expression using %w => ", Digits),
Exp = read_line().strip(),
evaluate(Digits,Exp).
evaluate(_Digits,"q") => halt.
evaluate(_Digits,"!") => play.
evaluate(Digits,Exp) =>
Operands = [to_int(D) : D in Exp, digit(D)].sort(),
(Digits !== Operands ->
println("You must use the given digits:" ++ to_string(Digits))
;
catch(Term = parse_term(Exp), Exception, println(Exception)),
Res is Term,
(Res =:= 24 ->
println("Good work!")
;
println("Wong expression")
)
),
play.