aboutsummaryrefslogtreecommitdiff
path: root/challenge-057
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-04-26 21:22:42 +0100
committerGitHub <noreply@github.com>2020-04-26 21:22:42 +0100
commit7069be5749837a40eaed3808831fa6110790642b (patch)
treea3c8ab47a1860b56630aab961920a0192e242b51 /challenge-057
parentecb3443824f6065d0d357b8b9f131b264c19b941 (diff)
parent53e402b12f5cef9842689099ac7303eedc0a87fd (diff)
downloadperlweeklychallenge-club-7069be5749837a40eaed3808831fa6110790642b.tar.gz
perlweeklychallenge-club-7069be5749837a40eaed3808831fa6110790642b.tar.bz2
perlweeklychallenge-club-7069be5749837a40eaed3808831fa6110790642b.zip
Merge pull request #1636 from drclaw1394/master
ruben's solutions for w56 and w57 ch-1 and ch-2. perl and raku
Diffstat (limited to 'challenge-057')
-rw-r--r--challenge-057/ruben-westerberg/README7
-rwxr-xr-xchallenge-057/ruben-westerberg/perl/ch-1.pl46
-rwxr-xr-xchallenge-057/ruben-westerberg/perl/ch-2.pl23
-rwxr-xr-xchallenge-057/ruben-westerberg/raku/ch-1.raku40
-rwxr-xr-xchallenge-057/ruben-westerberg/raku/ch-2.raku14
5 files changed, 125 insertions, 5 deletions
diff --git a/challenge-057/ruben-westerberg/README b/challenge-057/ruben-westerberg/README
index 1d82ee775f..f5785b52b9 100644
--- a/challenge-057/ruben-westerberg/README
+++ b/challenge-057/ruben-westerberg/README
@@ -2,11 +2,8 @@ Solution by Ruben Westerberg
ch-1.pl and ch-1.raku
===================
-Flip binary
-Run program to find largest number of 1's in binary number, after a select sub set has been flipped. Accepts 1 optional argument, which is is the number of digits in the (random) number to test.
-3 is the default
-
+Inverts a a binary tree. No pretty print though.... :(
ch-2.pl and ch-2.raku
===================
-Computes all the wave arrays for a given integer array. Accepts a single arbument which is the size of the array. Default is 4
+Finds the shortest unique prefix from a list of words
diff --git a/challenge-057/ruben-westerberg/perl/ch-1.pl b/challenge-057/ruben-westerberg/perl/ch-1.pl
new file mode 100755
index 0000000000..d950e6f5de
--- /dev/null
+++ b/challenge-057/ruben-westerberg/perl/ch-1.pl
@@ -0,0 +1,46 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+use feature ":all";
+no warnings "experimental";
+
+
+my $tree={
+ v=>1,
+ l=>{
+ v=>2,
+ l=>{
+ v=>4
+ },
+ r=>{
+ v=>5
+ }
+ },
+ r=>{
+ v=>3,
+ l=>{
+ v=>6
+ },
+ r=>{
+ v=>7
+ }
+ }
+};
+
+
+my @stack=($tree);
+
+while (@stack) {
+ given (shift @stack) {
+ my @keys=keys %$_;
+ if ( "l" ~~ @keys and "r" ~~ @keys) {
+ my $t=$_->{l};
+ $_->{l}=$_->{r};
+ $_->{r}=$t;
+ push @stack, $_->{l};
+ push @stack, $_->{r};
+ }
+ }
+}
+
diff --git a/challenge-057/ruben-westerberg/perl/ch-2.pl b/challenge-057/ruben-westerberg/perl/ch-2.pl
new file mode 100755
index 0000000000..ee3c4b7718
--- /dev/null
+++ b/challenge-057/ruben-westerberg/perl/ch-2.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+use feature ":all";
+no warnings "experimental";
+
+
+my @words= qw<alphabet book carpet cadmium cadeau alpine>;
+
+my @shortest=
+map {
+ my $prefix;
+ for my $i (0..length($_) -1) {
+ $prefix= substr $_,0, $i;
+ last if 1 == grep {$prefix eq $_} map { substr $_, 0, $i} @words;
+ }
+ $prefix;
+
+}
+@words;
+
+say join ", ",@shortest;
diff --git a/challenge-057/ruben-westerberg/raku/ch-1.raku b/challenge-057/ruben-westerberg/raku/ch-1.raku
new file mode 100755
index 0000000000..3f8a9dbda5
--- /dev/null
+++ b/challenge-057/ruben-westerberg/raku/ch-1.raku
@@ -0,0 +1,40 @@
+#!/usr/bin/env raku
+
+my $tree={
+ v=>1,
+ l=>{
+ v=>2,
+ l=>{
+ v=>4
+ },
+ r=>{
+ v=>5
+ }
+ },
+ r=>{
+ v=>3,
+ l=>{
+ v=>6
+ },
+ r=>{
+ v=>7
+ }
+ }
+};
+
+
+my @stack=($tree);
+
+while @stack {
+ given (@stack.shift) {
+ if all .{<l r>}:exists {
+ my $t=.<l>;
+ .<l>=.<r>;
+ .<r>=$t;
+ @stack.push: .<l>;
+ @stack.push: .<r>;
+ say $_;
+ }
+ }
+}
+
diff --git a/challenge-057/ruben-westerberg/raku/ch-2.raku b/challenge-057/ruben-westerberg/raku/ch-2.raku
new file mode 100755
index 0000000000..5dd7ee2705
--- /dev/null
+++ b/challenge-057/ruben-westerberg/raku/ch-2.raku
@@ -0,0 +1,14 @@
+#!/usr/bin/env raku
+
+my @words= <alphabet book carpet cadmium cadeau alpine>;
+
+my @shortest=@words.map({
+ my $prefix;
+ for (0.. .chars-1) -> $i {
+ $prefix= .substr(0,$i);
+ last if $prefix eq one @words.map({ .substr(0,$i)});
+ }
+ $prefix;
+});
+
+say @shortest;