diff options
| author | 2colours <polgar.marton@windowslive.com> | 2025-01-28 18:06:02 +0100 |
|---|---|---|
| committer | 2colours <polgar.marton@windowslive.com> | 2025-01-28 18:06:02 +0100 |
| commit | fb8c48b8871f0b7753040f2fe1db3a1e13b66f34 (patch) | |
| tree | 67a5649db950f9e24183ea76edad30c5c42b9ada | |
| parent | 9f01445472e1d7726cb68927820e322d56ca3142 (diff) | |
| download | perlweeklychallenge-club-fb8c48b8871f0b7753040f2fe1db3a1e13b66f34.tar.gz perlweeklychallenge-club-fb8c48b8871f0b7753040f2fe1db3a1e13b66f34.tar.bz2 perlweeklychallenge-club-fb8c48b8871f0b7753040f2fe1db3a1e13b66f34.zip | |
Add Prolog solutions to Week #306
| -rw-r--r-- | challenge-306/2colours/prolog/ch-1.p | 13 | ||||
| -rw-r--r-- | challenge-306/2colours/prolog/ch-2.p | 17 |
2 files changed, 30 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..0b2eba8ab0 --- /dev/null +++ b/challenge-306/2colours/prolog/ch-2.p @@ -0,0 +1,17 @@ +game([], 0). +game([Last_Remaining], Last_Remaining). +game(List, Result) :- + 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), !. |
