From cbe87670a3e04dcd6afc3f9cd1dc105f1f11df35 Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Sun, 2 Apr 2023 20:54:15 +0200 Subject: solution week 210-2 --- challenge-210/wambash/raku/ch-2.raku | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 challenge-210/wambash/raku/ch-2.raku 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 +} -- cgit From a0f25ecb795323fb3c80ac0c4c4fd87b8067a38e Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Sun, 2 Apr 2023 21:00:37 +0200 Subject: remove commended code --- challenge-210/wambash/raku/ch-2.raku | 1 - 1 file changed, 1 deletion(-) diff --git a/challenge-210/wambash/raku/ch-2.raku b/challenge-210/wambash/raku/ch-2.raku index 701d4c29be..cd355bf9ca 100644 --- a/challenge-210/wambash/raku/ch-2.raku +++ b/challenge-210/wambash/raku/ch-2.raku @@ -3,7 +3,6 @@ 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 } -- cgit