diff options
| author | Jan Krňávek <Jan.Krnavek@gmail.com> | 2023-04-02 20:54:15 +0200 |
|---|---|---|
| committer | Jan Krňávek <Jan.Krnavek@gmail.com> | 2023-04-02 20:54:15 +0200 |
| commit | cbe87670a3e04dcd6afc3f9cd1dc105f1f11df35 (patch) | |
| tree | 34f1fbb4ab1b4318df1437c47d229109cace5d83 /challenge-210 | |
| parent | 8915a66de2cb2a724aee5e55ddfc15580cfdf1d5 (diff) | |
| download | perlweeklychallenge-club-cbe87670a3e04dcd6afc3f9cd1dc105f1f11df35.tar.gz perlweeklychallenge-club-cbe87670a3e04dcd6afc3f9cd1dc105f1f11df35.tar.bz2 perlweeklychallenge-club-cbe87670a3e04dcd6afc3f9cd1dc105f1f11df35.zip | |
solution week 210-2
Diffstat (limited to 'challenge-210')
| -rw-r--r-- | challenge-210/wambash/raku/ch-2.raku | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/challenge-210/wambash/raku/ch-2.raku b/challenge-210/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..701d4c29be --- /dev/null +++ b/challenge-210/wambash/raku/ch-2.raku @@ -0,0 +1,40 @@ +#!/usr/bin/env raku + +subset Pos of Int where * > 0; +subset Neg of Int where * < 0; + +#multi number-colision-iter ((Neg $t,*@ll),(Neg $h,*@rl)) { @ll, ($t,$h,|@rl) } +multi number-colision-iter ( [Pos $t,*@ll], [Neg $h,*@rl] ) { + with $t <=> -$h { + when More { ($t,|@ll), @rl } + when Less { @ll, ($h,|@rl) } + when Same { @ll, @rl } + } +} + +multi number-colision-iter ( @tll, [$h,*@rl] ) {($h,|@tll), @rl} + +sub number-colision (+@list) { + ((),@list), {number-colision-iter |$_ } ... *[1] eq Empty + andthen .tail + andthen .[0] + andthen .reverse +} + +multi MAIN (Bool :test($)!) { + use Test; + is number-colision-iter((2,), (3,-1)),((3,2),(-1,)); + is number-colision-iter((3, 2), (-1,)),((3,2),()); + is number-colision-iter((3, 2), (-4,)),((2,),(-4)); + is number-colision-iter((2,), (-4,)),((),(-4)); + is number-colision-iter((), (-4,)),((-4),()); + is number-colision(2,3,-1),(2,3); + is number-colision(2,3,-4),(-4); + is number-colision(1,-1),(); + is number-colision(3,2,-1,2,-1,-2,5,-4),(3,2,5); + done-testing; +} + +multi MAIN (*@list) { + put number-colision @list +} |
