diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2023-03-30 10:43:49 +0200 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2023-03-30 10:43:49 +0200 |
| commit | 1e2c5f8abf9015eab42244446b613bc4a1455d76 (patch) | |
| tree | 1a17599293ce3d973fb4252e076b5d13c2cf3399 | |
| parent | dd044a58a3f0703625308eb5ee867b4b270bb598 (diff) | |
| download | perlweeklychallenge-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.p6 | 36 |
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; +} |
