diff options
| -rw-r--r-- | challenge-346/2colours/prolog/ch-2.p | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/challenge-346/2colours/prolog/ch-2.p b/challenge-346/2colours/prolog/ch-2.p new file mode 100644 index 0000000000..7afa2f7d2f --- /dev/null +++ b/challenge-346/2colours/prolog/ch-2.p @@ -0,0 +1,18 @@ +:- use_module(library(dcg/basics)). +:- use_module(library(dcg/high_order)). + + +operator --> `*`. +operator --> `+`. +operator --> `-`. +operator --> ``. + +good_expression(Str, Target, Expression) :- + string_codes(Str, Str_Codes), + phrase(sequence(digit, operator, Str_Codes), Expression_Codes), + string_codes(Expression, Expression_Codes), + read_term_from_atom(Expression, Term, []), + Term =:= Target. + + +task(Str, Target, Expressions) :- findall(Expression, good_expression(Str, Target, Expression), Expressions). |
