aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-346/2colours/prolog/ch-2.p18
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).