aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Westerberg <drclaw@mac.com>2020-04-27 05:49:05 +1000
committerRuben Westerberg <drclaw@mac.com>2020-04-27 05:49:05 +1000
commit0866476ab1fa1f949077c6d645a403b035cc61c0 (patch)
treead6bbd60df9850bb45995e0430c3faf424a4418d
parent3a439d23306ce2176c718a21415954d538035957 (diff)
downloadperlweeklychallenge-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-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
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;