aboutsummaryrefslogtreecommitdiff
path: root/challenge-210
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2023-03-30 10:51:03 +0200
committerLuca Ferrari <fluca1978@gmail.com>2023-03-30 10:51:03 +0200
commit78cbc27aa32c11ca001e5b9e3fbbb47589af18a2 (patch)
tree9731a854853ceec3303b9ed1c7473d997d6b2d0c /challenge-210
parent1e2c5f8abf9015eab42244446b613bc4a1455d76 (diff)
downloadperlweeklychallenge-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.plperl35
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;