aboutsummaryrefslogtreecommitdiff
path: root/challenge-210
diff options
context:
space:
mode:
authorJan Krňávek <Jan.Krnavek@gmail.com>2023-04-02 20:54:15 +0200
committerJan Krňávek <Jan.Krnavek@gmail.com>2023-04-02 20:54:15 +0200
commitcbe87670a3e04dcd6afc3f9cd1dc105f1f11df35 (patch)
tree34f1fbb4ab1b4318df1437c47d229109cace5d83 /challenge-210
parent8915a66de2cb2a724aee5e55ddfc15580cfdf1d5 (diff)
downloadperlweeklychallenge-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.raku40
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
+}