diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2023-03-30 10:51:03 +0200 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2023-03-30 10:51:03 +0200 |
| commit | 78cbc27aa32c11ca001e5b9e3fbbb47589af18a2 (patch) | |
| tree | 9731a854853ceec3303b9ed1c7473d997d6b2d0c /challenge-210 | |
| parent | 1e2c5f8abf9015eab42244446b613bc4a1455d76 (diff) | |
| download | perlweeklychallenge-club-78cbc27aa32c11ca001e5b9e3fbbb47589af18a2.tar.gz perlweeklychallenge-club-78cbc27aa32c11ca001e5b9e3fbbb47589af18a2.tar.bz2 perlweeklychallenge-club-78cbc27aa32c11ca001e5b9e3fbbb47589af18a2.zip | |
Task 1 plperl done
Diffstat (limited to 'challenge-210')
| -rw-r--r-- | challenge-210/luca-ferrari/postgresql/ch-1.plperl | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/challenge-210/luca-ferrari/postgresql/ch-1.plperl b/challenge-210/luca-ferrari/postgresql/ch-1.plperl new file mode 100644 index 0000000000..a0e0ee28c2 --- /dev/null +++ b/challenge-210/luca-ferrari/postgresql/ch-1.plperl @@ -0,0 +1,35 @@ +-- +-- Perl Weekly Challenge 210 +-- Task 1 +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-210/> +-- + +CREATE SCHEMA IF NOT EXISTS pwc210; + +CREATE OR REPLACE FUNCTION +pwc210.task1_plperl( int[] ) +RETURNS int +AS $CODE$ + my ( $list ) = @_; + my $max = 0; + my @removed; + + for ( $list->@* ) { + $max = $_ if( $max < $_ ); + } + + for my $index ( 2 .. $max ) { + next if ( grep { $_ == $index } @removed ); + next if ( grep { $_ == ( $index + 1 ) } @removed ); + next if ( grep { $_ == ( $index - 1 ) } @removed ); + + push @removed, ( grep( { $_ == $index } $list->@* ), + grep( { $_ == ( $index + 1) } $list->@* ), + grep( { $_ == ( $index - 1) } $list->@* ) ); + } + + my $sum = 0; + $sum += $_ for ( @removed ); + return $sum; +$CODE$ +LANGUAGE plperl; |
