aboutsummaryrefslogtreecommitdiff
path: root/challenge-100
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-02-21 19:16:32 +0000
committerGitHub <noreply@github.com>2021-02-21 19:16:32 +0000
commitae6cb2099f79eee7b3fb61cf9b603809ec631a7b (patch)
treeb0f83007eeec3b2e5cfc87e63c63e28a32e7903f /challenge-100
parentc7e1bf5a03c760718ef3a91890cf04f7e3fec76d (diff)
parent07312c02c584319c00292a1659d1a28562e01024 (diff)
downloadperlweeklychallenge-club-ae6cb2099f79eee7b3fb61cf9b603809ec631a7b.tar.gz
perlweeklychallenge-club-ae6cb2099f79eee7b3fb61cf9b603809ec631a7b.tar.bz2
perlweeklychallenge-club-ae6cb2099f79eee7b3fb61cf9b603809ec631a7b.zip
Merge pull request #3593 from adamcrussell/challenge-100
Challenge 100
Diffstat (limited to 'challenge-100')
-rw-r--r--challenge-100/adam-russell/blog.txt0
-rw-r--r--challenge-100/adam-russell/blog1.txt0
-rw-r--r--challenge-100/adam-russell/ch-1.dat1
-rw-r--r--challenge-100/adam-russell/perl/ch-1.sh1
-rw-r--r--challenge-100/adam-russell/perl/ch-2.pl30
-rw-r--r--challenge-100/adam-russell/prolog/ch-1.p33
-rw-r--r--challenge-100/adam-russell/prolog/ch-2.p30
7 files changed, 94 insertions, 1 deletions
diff --git a/challenge-100/adam-russell/blog.txt b/challenge-100/adam-russell/blog.txt
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/challenge-100/adam-russell/blog.txt
diff --git a/challenge-100/adam-russell/blog1.txt b/challenge-100/adam-russell/blog1.txt
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/challenge-100/adam-russell/blog1.txt
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/perl/ch-1.sh b/challenge-100/adam-russell/perl/ch-1.sh
new file mode 100644
index 0000000000..2529aad531
--- /dev/null
+++ b/challenge-100/adam-russell/perl/ch-1.sh
@@ -0,0 +1 @@
+perl -E 'shift=~/(\d+):(\d\d\s*(am|pm))/; $h=($1 < 12)?$1 + 12: $1; print "$h:$2\n"' "05:15 pm"
diff --git a/challenge-100/adam-russell/perl/ch-2.pl b/challenge-100/adam-russell/perl/ch-2.pl
new file mode 100644
index 0000000000..2e6e5ea2ac
--- /dev/null
+++ b/challenge-100/adam-russell/perl/ch-2.pl
@@ -0,0 +1,30 @@
+use strict;
+use warnings;
+##
+# Given a triangle array write a script to find
+# the minimum path sum from top to bottom.
+# When you are on index i on you may only
+# move to either index i or i+1 on the next row.
+#
+sub minimum_sum{
+ my(@triangle) = @_;
+ my($i, $j) = (0, 0);
+ my $sum = $triangle[0]->[0];
+ while($i < @triangle){
+ unless(!exists($triangle[$i+1])){
+ $j = ($triangle[$i+1]->[$j] >= $triangle[$i+1]->[$j+1]) ? $j+1 : $j;
+ $sum += $triangle[$i+1]->[$j];
+ }
+ $i++;
+ }
+ return $sum;
+}
+
+MAIN:{
+ my(@TRIANGLE);
+ @TRIANGLE = ([1], [2, 4], [6, 4, 9], [5, 1 , 7, 2]);
+ print minimum_sum(@TRIANGLE) . "\n";
+
+ @TRIANGLE =([3], [3, 1], [5, 2, 3], [4, 3, 1, 3]);
+ print minimum_sum(@TRIANGLE) . "\n";
+}
diff --git a/challenge-100/adam-russell/prolog/ch-1.p b/challenge-100/adam-russell/prolog/ch-1.p
new file mode 100644
index 0000000000..7df6c46e33
--- /dev/null
+++ b/challenge-100/adam-russell/prolog/ch-1.p
@@ -0,0 +1,33 @@
+:-initialization(main).
+
+hour_to_12(H12, H24):-
+ append(H, [58|R], H24),
+ number_codes(N0, H),
+ N is N0 - 12,
+ number_codes(N, C0),
+ flatten([C0, 58, R], C),
+ atom_codes(A, C),
+ H12 = A.
+
+hour_to_24(H12, H24):-
+ append(H, [58|R], H12),
+ number_codes(N0, H),
+ N is N0 + 12,
+ number_codes(N, C0),
+ flatten([C0, 58, R], C),
+ atom_codes(A, C),
+ H24 = A.
+
+twenty_four_hour(H12, H24):-
+ nonvar(H12),
+ hour_to_24(H12, H24).
+twenty_four_hour(H12, H24):-
+ nonvar(H24),
+ hour_to_12(H12, H24).
+
+main:-
+ twenty_four_hour("05:15 pm", HOUR_24),
+ write(HOUR_24), nl,
+ twenty_four_hour(HOUR_12, "17:15 pm"),
+ write(HOUR_12), nl,
+ halt.
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.