aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2023-03-17 11:59:50 +0100
committerLuca Ferrari <fluca1978@gmail.com>2023-03-17 11:59:50 +0100
commitd75f8ec2c07ddc7e9e765000033b022e9402ac76 (patch)
tree07532e4c4ad13a692435fd033cda601e8c0c5d11
parent34ee2c6cf9a476b8255137f2508178770e98c09b (diff)
downloadperlweeklychallenge-club-d75f8ec2c07ddc7e9e765000033b022e9402ac76.tar.gz
perlweeklychallenge-club-d75f8ec2c07ddc7e9e765000033b022e9402ac76.tar.bz2
perlweeklychallenge-club-d75f8ec2c07ddc7e9e765000033b022e9402ac76.zip
Task 1 plperl done
-rw-r--r--challenge-208/luca-ferrari/postgresql/ch-1.plperl38
1 files changed, 38 insertions, 0 deletions
diff --git a/challenge-208/luca-ferrari/postgresql/ch-1.plperl b/challenge-208/luca-ferrari/postgresql/ch-1.plperl
new file mode 100644
index 0000000000..2fc60f38d0
--- /dev/null
+++ b/challenge-208/luca-ferrari/postgresql/ch-1.plperl
@@ -0,0 +1,38 @@
+--
+-- Perl Weekly Challenge 208
+-- Task 1
+-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-208/>
+--
+
+CREATE SCHEMA IF NOT EXISTS pwc208;
+
+/**
+ testdb=> select pwc208.task1_plperl( array['Perl', 'Raku', 'PHP']::text[], array['Raku', 'Perl', 'Java']::text[] );
+ task1_plperl
+--------------
+ Perl
+ Raku
+(2 rows)
+
+*/
+CREATE OR REPLACE FUNCTION
+pwc208.task1_plperl( text[], text[] )
+RETURNS SETOF text
+AS $CODE$
+ my ( $first, $second ) = @_;
+ my %results;
+
+ for my $a ( 0 .. $first->@* ) {
+ next if ! grep( $first->[ $a ], $second->@* );
+
+ my $b = ( grep( $first->[ $a ] eq $second->[ $_ ], 0 .. $second->@* ) )[ 0 ];
+ push $results{ $a + $b }->@*, $first->[ $a ];
+ }
+
+ my $min = ( sort keys %results )[ 0 ];
+ return_next( $_ ) for ( $results{ $min }->@* );
+
+return undef;
+
+$CODE$
+LANGUAGE plperl;