aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2023-03-30 10:43:49 +0200
committerLuca Ferrari <fluca1978@gmail.com>2023-03-30 10:43:49 +0200
commit1e2c5f8abf9015eab42244446b613bc4a1455d76 (patch)
tree1a17599293ce3d973fb4252e076b5d13c2cf3399
parentdd044a58a3f0703625308eb5ee867b4b270bb598 (diff)
downloadperlweeklychallenge-club-1e2c5f8abf9015eab42244446b613bc4a1455d76.tar.gz
perlweeklychallenge-club-1e2c5f8abf9015eab42244446b613bc4a1455d76.tar.bz2
perlweeklychallenge-club-1e2c5f8abf9015eab42244446b613bc4a1455d76.zip
Task 2 done
-rw-r--r--challenge-210/luca-ferrari/raku/ch-2.p636
1 files changed, 36 insertions, 0 deletions
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 <https://perlweeklychallenge.org/blog/perl-weekly-challenge-210/>
+#
+
+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;
+}