diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-02-21 19:16:32 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-21 19:16:32 +0000 |
| commit | ae6cb2099f79eee7b3fb61cf9b603809ec631a7b (patch) | |
| tree | b0f83007eeec3b2e5cfc87e63c63e28a32e7903f /challenge-100 | |
| parent | c7e1bf5a03c760718ef3a91890cf04f7e3fec76d (diff) | |
| parent | 07312c02c584319c00292a1659d1a28562e01024 (diff) | |
| download | perlweeklychallenge-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.txt | 0 | ||||
| -rw-r--r-- | challenge-100/adam-russell/blog1.txt | 0 | ||||
| -rw-r--r-- | challenge-100/adam-russell/ch-1.dat | 1 | ||||
| -rw-r--r-- | challenge-100/adam-russell/perl/ch-1.sh | 1 | ||||
| -rw-r--r-- | challenge-100/adam-russell/perl/ch-2.pl | 30 | ||||
| -rw-r--r-- | challenge-100/adam-russell/prolog/ch-1.p | 33 | ||||
| -rw-r--r-- | challenge-100/adam-russell/prolog/ch-2.p | 30 |
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. |
