aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Russell <ac.russell@live.com>2021-02-21 13:57:08 -0500
committerAdam Russell <ac.russell@live.com>2021-02-21 13:57:08 -0500
commit07312c02c584319c00292a1659d1a28562e01024 (patch)
tree1aa3a52aae2c1eaf9ca78bf254185ef11ea49926
parentcca2b3ff364d33d2f1986b3168f410b889d6d723 (diff)
downloadperlweeklychallenge-club-07312c02c584319c00292a1659d1a28562e01024.tar.gz
perlweeklychallenge-club-07312c02c584319c00292a1659d1a28562e01024.tar.bz2
perlweeklychallenge-club-07312c02c584319c00292a1659d1a28562e01024.zip
Prolog solution for part 2.
-rw-r--r--challenge-100/adam-russell/ch-1.dat1
-rw-r--r--challenge-100/adam-russell/prolog/ch-2.p30
2 files changed, 30 insertions, 1 deletions
diff --git a/challenge-100/adam-russell/ch-1.dat b/challenge-100/adam-russell/ch-1.dat
deleted file mode 100644
index a32a4347a4..0000000000
--- a/challenge-100/adam-russell/ch-1.dat
+++ /dev/null
@@ -1 +0,0 @@
-1234567890
diff --git a/challenge-100/adam-russell/prolog/ch-2.p b/challenge-100/adam-russell/prolog/ch-2.p
new file mode 100644
index 0000000000..f3f9a230b0
--- /dev/null
+++ b/challenge-100/adam-russell/prolog/ch-2.p
@@ -0,0 +1,30 @@
+:-initialization(main).
+
+minimum_sum(Triangle, Sum):-
+ minimum_sum(Triangle, 1, 0, Sum).
+minimum_sum([H|[]], Index, PartialSum, Sum):-
+ nth(Index, H, N),
+ Sum is PartialSum + N.
+minimum_sum([H0, H1|T], Index, PartialSum, Sum):-
+ nth(Index, H0, N0),
+ PartialSum0 is PartialSum + N0,
+ I0 is Index + 1,
+ nth(I0, H1, N1),
+ nth(Index, H1, N2),
+ N1 > N2,
+ minimum_sum([H1|T], Index, PartialSum0, Sum).
+minimum_sum([H0, H1|T], Index, PartialSum, Sum):-
+ nth(Index, H0, N0),
+ PartialSum0 is PartialSum + N0,
+ I0 is Index + 1,
+ nth(I0, H1, N1),
+ nth(Index, H1, N2),
+ N1 =< N2,
+ minimum_sum([H1|T], I0, PartialSum0, Sum).
+
+main:-
+ minimum_sum([[1], [2, 4], [6, 4, 9], [5, 1, 7, 2]], Sum0),
+ write(Sum0), nl,
+ minimum_sum([[3], [3, 1], [5, 2, 3], [4, 3, 1, 3]], Sum1),
+ write(Sum1), nl,
+ halt.