aboutsummaryrefslogtreecommitdiff
path: root/challenge-199
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2023-01-09 10:17:21 +0100
committerLuca Ferrari <fluca1978@gmail.com>2023-01-09 10:17:21 +0100
commit41df53aa3f75854aa565cbe4911ac16edaec3668 (patch)
treeaf6d5a00bfd7ef32f32d8d8cee173c2f171bcf82 /challenge-199
parentdec095313737f0489797225861addabcf8e5a4f0 (diff)
downloadperlweeklychallenge-club-41df53aa3f75854aa565cbe4911ac16edaec3668.tar.gz
perlweeklychallenge-club-41df53aa3f75854aa565cbe4911ac16edaec3668.tar.bz2
perlweeklychallenge-club-41df53aa3f75854aa565cbe4911ac16edaec3668.zip
Task 2 plperl done
Diffstat (limited to 'challenge-199')
-rw-r--r--challenge-199/luca-ferrari/postgresql/ch-2.plperl34
1 files changed, 34 insertions, 0 deletions
diff --git a/challenge-199/luca-ferrari/postgresql/ch-2.plperl b/challenge-199/luca-ferrari/postgresql/ch-2.plperl
new file mode 100644
index 0000000000..5063643e27
--- /dev/null
+++ b/challenge-199/luca-ferrari/postgresql/ch-2.plperl
@@ -0,0 +1,34 @@
+-- Perl Weekly Challenge 199
+-- Task 2
+
+CREATE SCHEMA IF NOT EXISTS pwc199;
+
+/*
+estdb=> select pwc199.task2_plperl( 7,2,3, array[3,0,1,1,9,7]::int[] );
+ task2_plperl
+--------------
+ 4
+
+*/
+CREATE OR REPLACE FUNCTION
+pwc199.task2_plperl( int, int, int, int[] )
+RETURNS int
+AS $CODE$
+ my ( $x, $y, $z, $list ) = @_;
+ my @triplets;
+
+ for my $i ( 0 .. $list->@* ) {
+ for my $j ( $i + 1 .. $list->@* - 1 ) {
+ for my $k ( $j + 1 .. $list->@* - 2 ) {
+
+ push @triplets, [ $i, $j, $k ] if ( abs( $list->[ $i ] - $list->[ $j ] ) <= $x
+ && abs( $list->[ $j ] - $list->[ $k ] ) <= $y
+ && abs( $list->[ $i ] - $list->[ $k ] ) <= $z );
+ }
+ }
+ }
+
+
+ return scalar @triplets;
+$CODE$
+LANGUAGE plperl;