diff options
| -rw-r--r-- | challenge-082/simon-proctor/raku/ch-1.raku | 12 | ||||
| -rw-r--r-- | challenge-082/simon-proctor/raku/ch-2.raku | 12 |
2 files changed, 24 insertions, 0 deletions
diff --git a/challenge-082/simon-proctor/raku/ch-1.raku b/challenge-082/simon-proctor/raku/ch-1.raku new file mode 100644 index 0000000000..3215cb071a --- /dev/null +++ b/challenge-082/simon-proctor/raku/ch-1.raku @@ -0,0 +1,12 @@ +#!/usr/bin/env raku + +use v6; + +#| Given two positive integers print the common factors (not including the values themselves). +sub MAIN ( UInt $M, UInt $N ) { + say "({(fac($M) (&) fac($N)).keys.sort.join(', ')})" +} + +sub fac( UInt $v ) { + (1..^$v).grep( $v %% * ) +} diff --git a/challenge-082/simon-proctor/raku/ch-2.raku b/challenge-082/simon-proctor/raku/ch-2.raku new file mode 100644 index 0000000000..916919eb9c --- /dev/null +++ b/challenge-082/simon-proctor/raku/ch-2.raku @@ -0,0 +1,12 @@ +#!/usr/bin/env raku + +use v6; + +#| Given three strings return 1 if the third string ($C) can be made by interleaving $A and $B +sub MAIN ( Str $A, Str $B, Str $C ) { + ( any( |possible-interleaves($A,$B), |possible-interleaves($B,$A) ) ~~ $C ).Int.say; +} + +sub possible-interleaves( Str $out, Str $sub ) { + (0..$out.codes).map( { my $x = $out; $x.substr-rw($_,0) = $sub; $x } ) +} |
