diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2023-03-30 11:10:15 +0200 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2023-03-30 11:10:15 +0200 |
| commit | 218360eeabae3dfbc93a7617bcb7f2dc4f85054a (patch) | |
| tree | ff2f78366d9dd6b63a37986eb0c37885b89ac504 | |
| parent | 78cbc27aa32c11ca001e5b9e3fbbb47589af18a2 (diff) | |
| download | perlweeklychallenge-club-218360eeabae3dfbc93a7617bcb7f2dc4f85054a.tar.gz perlweeklychallenge-club-218360eeabae3dfbc93a7617bcb7f2dc4f85054a.tar.bz2 perlweeklychallenge-club-218360eeabae3dfbc93a7617bcb7f2dc4f85054a.zip | |
Task 2 plperl done
| -rw-r--r-- | challenge-210/luca-ferrari/postgresql/ch-2.plperl | 46 | ||||
| -rw-r--r-- | challenge-210/luca-ferrari/raku/ch-2.p6 | 4 |
2 files changed, 46 insertions, 4 deletions
diff --git a/challenge-210/luca-ferrari/postgresql/ch-2.plperl b/challenge-210/luca-ferrari/postgresql/ch-2.plperl new file mode 100644 index 0000000000..4ae152a454 --- /dev/null +++ b/challenge-210/luca-ferrari/postgresql/ch-2.plperl @@ -0,0 +1,46 @@ +-- +-- Perl Weekly Challenge 210 +-- Task 2 +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-210/> +-- + +CREATE SCHEMA IF NOT EXISTS pwc210; + +CREATE OR REPLACE FUNCTION +pwc210.task2_plperl( int[] ) +RETURNS SETOF int +AS $CODE$ + my ( $list ) = @_; + my $move = 1; + + while ( $move ) { + $move = 0; + for my $index ( 0 .. scalar( $list->@* ) - 1 ) { + my $offset = $list->[ $index ] > 0 ? 1 : -1; + + my ( $left, $right ) = ( $list->[ $index ], $list->[ $index + $offset ] ); + next if ( ! $left || ! $right ); + next if ( $left > 0 && $right > 0 ); + next if ( $left < 0 && $right < 0 ); + + + $move++; + $right *= ( $right < 0 ? -1 : 1 ); + $left *= ( $left < 0 ? -1 : 1 ); + + $list->[ $index ] = 0 if ( $left <= $right ); + $list->[ $index + $offset ] = 0 if ( $left >= $right ); + } + + $list = [ grep { $_ != 0 } $list->@* ]; + } + + for ( $list->@* ) { + + next if ( ! $_ ); + return_next( $_ ); + } + + return undef; +$CODE$ +LANGUAGE plperl; diff --git a/challenge-210/luca-ferrari/raku/ch-2.p6 b/challenge-210/luca-ferrari/raku/ch-2.p6 index 260791cdab..afe525628b 100644 --- a/challenge-210/luca-ferrari/raku/ch-2.p6 +++ b/challenge-210/luca-ferrari/raku/ch-2.p6 @@ -9,10 +9,6 @@ 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 ) { |
