aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-02-09 07:45:51 +0000
committerGitHub <noreply@github.com>2022-02-09 07:45:51 +0000
commitc8fb87986f7d7dd1c527de58b0c89d642f410e26 (patch)
treec7fa46b1dcaa854ec4d6c373cde840ff253605a1
parent2d531f9d889c0a32bebd6f4f7ccdfd652dcb39b6 (diff)
parent860cc3fe8b443851c3231f1fa839fd2dc0b0acab (diff)
downloadperlweeklychallenge-club-c8fb87986f7d7dd1c527de58b0c89d642f410e26.tar.gz
perlweeklychallenge-club-c8fb87986f7d7dd1c527de58b0c89d642f410e26.tar.bz2
perlweeklychallenge-club-c8fb87986f7d7dd1c527de58b0c89d642f410e26.zip
Merge pull request #5630 from polettix/polettix/pwc151
Add polettix's solution to challenge-151
-rw-r--r--challenge-151/polettix/blog.txt1
-rw-r--r--challenge-151/polettix/blog1.txt1
-rw-r--r--challenge-151/polettix/perl/ch-1.pl19
-rw-r--r--challenge-151/polettix/perl/ch-2.pl17
-rw-r--r--challenge-151/polettix/raku/ch-1.raku20
-rw-r--r--challenge-151/polettix/raku/ch-2.raku12
6 files changed, 70 insertions, 0 deletions
diff --git a/challenge-151/polettix/blog.txt b/challenge-151/polettix/blog.txt
new file mode 100644
index 0000000000..344964a6d5
--- /dev/null
+++ b/challenge-151/polettix/blog.txt
@@ -0,0 +1 @@
+https://github.polettix.it/ETOOBUSY/2022/02/09/pwc151-binary-tree-depth/
diff --git a/challenge-151/polettix/blog1.txt b/challenge-151/polettix/blog1.txt
new file mode 100644
index 0000000000..746e19693c
--- /dev/null
+++ b/challenge-151/polettix/blog1.txt
@@ -0,0 +1 @@
+https://github.polettix.it/ETOOBUSY/2022/02/10/pwc151-rob-the-house/
diff --git a/challenge-151/polettix/perl/ch-1.pl b/challenge-151/polettix/perl/ch-1.pl
new file mode 100644
index 0000000000..6c4d7cef51
--- /dev/null
+++ b/challenge-151/polettix/perl/ch-1.pl
@@ -0,0 +1,19 @@
+#!/usr/bin/env perl
+use v5.24;
+use warnings;
+use experimental 'signatures';
+no warnings 'experimental::signatures';
+
+my $input = shift // '1 | 2 3 | 4 5';
+my @levels = map { [ split m{\s+}mxs ] } split m{\s*\|\s*}mxs, $input;
+for my $depth (1 .. $#levels) {
+ for my $i (0 .. $levels[$depth - 1]->$#*) {
+ next if $levels[$depth - 1][$i] eq '*'
+ || ($levels[$depth][$i * 2] // '*') ne '*'
+ || ($levels[$depth][$i * 2 + 1] // '*') ne '*';
+ say $depth;
+ exit 0;
+ }
+}
+say scalar @levels;
+exit 0;
diff --git a/challenge-151/polettix/perl/ch-2.pl b/challenge-151/polettix/perl/ch-2.pl
new file mode 100644
index 0000000000..f9e9df6caf
--- /dev/null
+++ b/challenge-151/polettix/perl/ch-2.pl
@@ -0,0 +1,17 @@
+#!/usr/bin/env perl
+use v5.24;
+use warnings;
+use experimental 'signatures';
+no warnings 'experimental::signatures';
+use Memoize 'memoize';
+use List::Util 'max';
+
+memoize('rob_the_house');
+sub rob_the_house ($list, $start = 0) {
+ return 0 if $start > $list->$#*;
+ return $list->[$start]
+ + max(rob_the_house($list, $start + 2),
+ rob_the_house($list, $start + 3));
+}
+
+say rob_the_house([@ARGV]);
diff --git a/challenge-151/polettix/raku/ch-1.raku b/challenge-151/polettix/raku/ch-1.raku
new file mode 100644
index 0000000000..4dbfdf068e
--- /dev/null
+++ b/challenge-151/polettix/raku/ch-1.raku
@@ -0,0 +1,20 @@
+#!/usr/bin/env raku
+use v6;
+sub MAIN (Str $input = '1 | 2 3 | 4 5') {
+ if ($input.chars == 0) {
+ put 0;
+ return 0;
+ }
+ my @levels = $input.split(/\s*\|\s*/)».comb(/\S+/)».Array;
+ for 1 ..^ @levels -> $depth {
+ for 0 .. @levels[$depth - 1].end -> $i {
+ next if (@levels[$depth - 1][$i] eq '*')
+ || ((@levels[$depth][$i * 2] // '*') ne '*')
+ || ((@levels[$depth][$i * 2 + 1] // '*') ne '*');
+ put $depth;
+ return 0;
+ }
+ }
+ put @levels.elems;
+ return 0;
+}
diff --git a/challenge-151/polettix/raku/ch-2.raku b/challenge-151/polettix/raku/ch-2.raku
new file mode 100644
index 0000000000..d529f1f753
--- /dev/null
+++ b/challenge-151/polettix/raku/ch-2.raku
@@ -0,0 +1,12 @@
+#!/usr/bin/env raku
+use v6;
+sub MAIN (*@args) { put rob-the-house(@args) }
+
+sub rob-the-house (@list) {
+ multi sub rth ($index where * > @list.end) { return 0 }
+ my @cache;
+ multi sub rth ($index) {
+ @cache[$index] //= @list[$index] + (2, 3).map({rth($index + $_)}).max;
+ }
+ return rth(0);
+}