aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2023-03-30 11:10:15 +0200
committerLuca Ferrari <fluca1978@gmail.com>2023-03-30 11:10:15 +0200
commit218360eeabae3dfbc93a7617bcb7f2dc4f85054a (patch)
treeff2f78366d9dd6b63a37986eb0c37885b89ac504
parent78cbc27aa32c11ca001e5b9e3fbbb47589af18a2 (diff)
downloadperlweeklychallenge-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.plperl46
-rw-r--r--challenge-210/luca-ferrari/raku/ch-2.p64
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 ) {