diff options
Diffstat (limited to 'challenge-203')
| -rw-r--r-- | challenge-203/wambash/raku/ch-1.raku | 21 | ||||
| -rw-r--r-- | challenge-203/wambash/raku/ch-2.raku | 35 |
2 files changed, 56 insertions, 0 deletions
diff --git a/challenge-203/wambash/raku/ch-1.raku b/challenge-203/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..145edc66b5 --- /dev/null +++ b/challenge-203/wambash/raku/ch-1.raku @@ -0,0 +1,21 @@ +#!/usr/bin/env raku + +sub special-quadruplets (+@nums) { + @nums + andthen .combinations(3) + andthen .map: *.sum + andthen .map: { |@nums.grep: * == $_ }\ + andthen .elems +} + +multi MAIN (Bool :test($)!) { + use Test; + is special-quadruplets(1,2,3,6),1; + is special-quadruplets(1,1,1,3,5),4; + is special-quadruplets(3,3,6,4,5),0; + done-testing; +} + +multi MAIN (*@nums) { + say special-quadruplets @nums +} diff --git a/challenge-203/wambash/raku/ch-2.raku b/challenge-203/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..a89310245f --- /dev/null +++ b/challenge-203/wambash/raku/ch-2.raku @@ -0,0 +1,35 @@ +#!/usr/bin/env raku + +sub deep-walk (:$start= '.'.IO, :&deep = *.dir, :&test = *.d --> Supply) { + my sub supply-gen ( $start ) { + for deep( $start ) { + .emit; + when &test { supply-gen $_} ; + } + }; + supply supply-gen $start; +} + +multi MAIN (Bool :test($)!) { + use Test; + is-deeply deep-walk(:start(1,(2,(3,4))), :deep(*.list), :test(* !~~ Int) ).grep( * ~~ Int).list, (1,2,3,4); + my $source = 'a/b/c' => ( + 1 => ('1.a' =>'a.txt', '1.txt'), + 2 => '2.txt', + 3 => '3.txt', + 4 => Empty, + 5 => '5.txt', + ); + is-deeply deep-walk( :start($source), :deep(*.value), :test( * ~~ Pair ) ).grep( * ~~ Pair).map(*.key).list, (1,'1.a',2,3,4,5); + done-testing; +} + +multi MAIN ( IO() $from, IO() $to = '.'.IO, Bool :no-act(:$n) = False, Bool :verbose(:$v) = False ) { + deep-walk start => $from + andthen .grep: *.d + andthen .map: { $to.add( $_.subst: / ^ $from / ) }\ + andthen { + .tap( *.say ) if $n|$v; + .tap( *.mkdir ) if $v; + } +} |
