diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-04-26 21:22:42 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-26 21:22:42 +0100 |
| commit | 7069be5749837a40eaed3808831fa6110790642b (patch) | |
| tree | a3c8ab47a1860b56630aab961920a0192e242b51 /challenge-057 | |
| parent | ecb3443824f6065d0d357b8b9f131b264c19b941 (diff) | |
| parent | 53e402b12f5cef9842689099ac7303eedc0a87fd (diff) | |
| download | perlweeklychallenge-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/README | 7 | ||||
| -rwxr-xr-x | challenge-057/ruben-westerberg/perl/ch-1.pl | 46 | ||||
| -rwxr-xr-x | challenge-057/ruben-westerberg/perl/ch-2.pl | 23 | ||||
| -rwxr-xr-x | challenge-057/ruben-westerberg/raku/ch-1.raku | 40 | ||||
| -rwxr-xr-x | challenge-057/ruben-westerberg/raku/ch-2.raku | 14 |
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; |
