diff options
| author | Ruben Westerberg <drclaw@mac.com> | 2020-04-27 05:49:05 +1000 |
|---|---|---|
| committer | Ruben Westerberg <drclaw@mac.com> | 2020-04-27 05:49:05 +1000 |
| commit | 0866476ab1fa1f949077c6d645a403b035cc61c0 (patch) | |
| tree | ad6bbd60df9850bb45995e0430c3faf424a4418d | |
| parent | 3a439d23306ce2176c718a21415954d538035957 (diff) | |
| download | perlweeklychallenge-club-0866476ab1fa1f949077c6d645a403b035cc61c0.tar.gz perlweeklychallenge-club-0866476ab1fa1f949077c6d645a403b035cc61c0.tar.bz2 perlweeklychallenge-club-0866476ab1fa1f949077c6d645a403b035cc61c0.zip | |
Added w57 ch-1 and ch-2 perl and raku
No bonus points for my tree printing.. out of time again!
| -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 |
4 files changed, 123 insertions, 0 deletions
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; |
