diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2023-03-17 11:59:50 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2023-03-17 11:59:50 +0100 |
| commit | d75f8ec2c07ddc7e9e765000033b022e9402ac76 (patch) | |
| tree | 07532e4c4ad13a692435fd033cda601e8c0c5d11 | |
| parent | 34ee2c6cf9a476b8255137f2508178770e98c09b (diff) | |
| download | perlweeklychallenge-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.plperl | 38 |
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; |
