aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-347/2colours/prolog/ch-2.p12
1 files changed, 12 insertions, 0 deletions
diff --git a/challenge-347/2colours/prolog/ch-2.p b/challenge-347/2colours/prolog/ch-2.p
new file mode 100644
index 0000000000..a5bc91ba35
--- /dev/null
+++ b/challenge-347/2colours/prolog/ch-2.p
@@ -0,0 +1,12 @@
+:- use_module(library(dcg/basics)).
+:- use_module(library(dcg/high_order)).
+:- use_module(library(clpfd)).
+
+chunk(Chunk) --> { length(Chunk, 3) ; length(Chunk, 2) }, string(Chunk).
+
+task(Str, Result) :-
+ re_replace("[ -]"/g, "", Str, Str_Stripped),
+ string_codes(Str_Stripped, Codes_Stripped),
+ once(phrase(sequence(chunk, Chunks), Codes_Stripped)),
+ phrase(sequence(chunk, `-`, Chunks), Result_Codes),
+ string_codes(Result, Result_Codes).