aboutsummaryrefslogtreecommitdiff
path: root/challenge-151
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-02-15 15:09:56 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-02-15 15:09:56 +0000
commitc62f025cf9513caec622588cb9126aaa481d0314 (patch)
tree9b53f24c455fdba6297e289f5d134f1128a81700 /challenge-151
parentb3272fcd399c09f3a1290e58fe9876f523d1b315 (diff)
downloadperlweeklychallenge-club-c62f025cf9513caec622588cb9126aaa481d0314.tar.gz
perlweeklychallenge-club-c62f025cf9513caec622588cb9126aaa481d0314.tar.bz2
perlweeklychallenge-club-c62f025cf9513caec622588cb9126aaa481d0314.zip
- Added solutions by Laurent Rosenfeld.
Diffstat (limited to 'challenge-151')
-rw-r--r--challenge-151/laurent-rosenfeld/perl/ch-2.pl27
-rw-r--r--challenge-151/laurent-rosenfeld/raku/ch-2.raku18
2 files changed, 45 insertions, 0 deletions
diff --git a/challenge-151/laurent-rosenfeld/perl/ch-2.pl b/challenge-151/laurent-rosenfeld/perl/ch-2.pl
new file mode 100644
index 0000000000..5169c76f0f
--- /dev/null
+++ b/challenge-151/laurent-rosenfeld/perl/ch-2.pl
@@ -0,0 +1,27 @@
+use strict;
+use warnings;
+use feature "say";
+
+my $best_so_far;
+
+sub get_best {
+ my $sum_so_far = $_[0];
+ my @in = @{$_[1]};
+
+ if (@in <= 2) {
+ $sum_so_far += $in[0] if @in == 1;
+ $sum_so_far += $in[1] if @in == 2;
+ $best_so_far = $sum_so_far if $sum_so_far > $best_so_far;
+ return;
+ }
+ for my $i (0, 1) {
+ get_best($sum_so_far + $in[$i], [@in[$i + 2 .. $#in]]);
+ }
+}
+
+my @valuables = ([2, 4, 5], [4, 2, 3, 6, 5, 3], [4, 2, 5, 10]);
+for my $test (@valuables) {
+ $best_so_far = 0;
+ get_best 0, $test;
+ say "@$test -> ", $best_so_far;
+}
diff --git a/challenge-151/laurent-rosenfeld/raku/ch-2.raku b/challenge-151/laurent-rosenfeld/raku/ch-2.raku
new file mode 100644
index 0000000000..d06890e73b
--- /dev/null
+++ b/challenge-151/laurent-rosenfeld/raku/ch-2.raku
@@ -0,0 +1,18 @@
+use v6;
+
+sub get_best(@in, $sum-so-far is copy) {
+ if @in.elems <= 2 {
+ $sum-so-far += @in.max;
+ $*best-so-far = $sum-so-far if $sum-so-far > $*best-so-far;
+ return;
+ }
+ for 0, 1 -> $i {
+ get_best @in[$i + 2 .. @in.end], $sum-so-far + @in[$i];
+ }
+}
+my @valuables = (2, 4, 5), (4, 2, 3, 6, 5, 3), (4, 2, 5, 10);
+for @valuables -> $test {
+ my $*best-so-far = 0; # dynamic scope variable
+ get_best $test, 0;
+ say $test, " -> ", $*best-so-far;
+}