From 0866476ab1fa1f949077c6d645a403b035cc61c0 Mon Sep 17 00:00:00 2001 From: Ruben Westerberg Date: Mon, 27 Apr 2020 05:49:05 +1000 Subject: Added w57 ch-1 and ch-2 perl and raku No bonus points for my tree printing.. out of time again! --- challenge-057/ruben-westerberg/perl/ch-1.pl | 46 +++++++++++++++++++++++++++ challenge-057/ruben-westerberg/perl/ch-2.pl | 23 ++++++++++++++ challenge-057/ruben-westerberg/raku/ch-1.raku | 40 +++++++++++++++++++++++ challenge-057/ruben-westerberg/raku/ch-2.raku | 14 ++++++++ 4 files changed, 123 insertions(+) create mode 100755 challenge-057/ruben-westerberg/perl/ch-1.pl create mode 100755 challenge-057/ruben-westerberg/perl/ch-2.pl create mode 100755 challenge-057/ruben-westerberg/raku/ch-1.raku create mode 100755 challenge-057/ruben-westerberg/raku/ch-2.raku 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; + +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 .{}:exists { + my $t=.; + .=.; + .=$t; + @stack.push: .; + @stack.push: .; + 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= ; + +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; -- cgit