From 1e2c5f8abf9015eab42244446b613bc4a1455d76 Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Thu, 30 Mar 2023 10:43:49 +0200 Subject: Task 2 done --- challenge-210/luca-ferrari/raku/ch-2.p6 | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 challenge-210/luca-ferrari/raku/ch-2.p6 diff --git a/challenge-210/luca-ferrari/raku/ch-2.p6 b/challenge-210/luca-ferrari/raku/ch-2.p6 new file mode 100644 index 0000000000..260791cdab --- /dev/null +++ b/challenge-210/luca-ferrari/raku/ch-2.p6 @@ -0,0 +1,36 @@ +#!raku + +# +# Perl Weekly Challenge 210 +# Task 2 +# +# See +# + +sub MAIN( *@list is copy where { @list.grep( * ~~ Int ).elems == @list.elems } ) { + + my @sorted-list = @list.sort; + + # 2 3 -1 + # -1 2 3 + my $move = True; + + while ( $move ) { + $move = False; + for 0 ..^ @list.elems - 1 { + + my ( $left, $right ) = @list[ $_ ], @list[ $_ + ( @list[ $_ ] > 0 ?? 1 !! -1 ) ]; + next if ( ! $left || ! $right ); + next if ( $left > 0 && $right > 0 ); + next if ( $left < 0 && $right < 0 ); + + $move = True; + @list[ $_ + ( @list[ $_ ] > 0 ?? 1 !! -1 ) ] = Nil if ( $left.abs >= $right.abs ); + @list[ $_ ] = Nil if ( $left.abs <= $right.abs ); + + } + @list = @list.grep( * ~~ Int ); + } + + @list.grep( * ~~ Int ).join( ', ' ).say; +} -- cgit