diff options
| -rw-r--r-- | challenge-306/2colours/prolog/ch-1.p | 13 | ||||
| -rw-r--r-- | challenge-306/2colours/prolog/ch-2.p | 18 |
2 files changed, 31 insertions, 0 deletions
diff --git a/challenge-306/2colours/prolog/ch-1.p b/challenge-306/2colours/prolog/ch-1.p new file mode 100644 index 0000000000..0e90897a5d --- /dev/null +++ b/challenge-306/2colours/prolog/ch-1.p @@ -0,0 +1,13 @@ +:- use_module(library(clpfd)). + +task1(Ints, Result) :- + length(Ints, Max_L), + findall(Sum, ( + N in 1..Max_L, + N mod 2 #= 1, + indomain(N), + length(SA, N), + append([_Prefix, SA, _Suffix], Ints), + sum_list(SA, Sum) + ), Sums), + sum_list(Sums, Result). diff --git a/challenge-306/2colours/prolog/ch-2.p b/challenge-306/2colours/prolog/ch-2.p new file mode 100644 index 0000000000..465532d012 --- /dev/null +++ b/challenge-306/2colours/prolog/ch-2.p @@ -0,0 +1,18 @@ +game([], 0). +game([Last_Remaining], Last_Remaining). +game(List, Result) :- + length(List, N), N > 1, + max_list(List, Max1), + once(select(Max1, List, Rest)), + max_list(Rest, Max2), + once(nth0(Pos2, Rest, Max2, Rest2)), + Diff is Max1 - Max2, + (Diff =:= 0 -> + game(Rest2, Result) + ; + true -> + nth0(Pos2, New_List, Diff, Rest2), + game(New_List, Result) + ). + +task2(Ints, Result) :- game(Ints, Result), !. |
