diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2022-12-12 09:26:40 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2022-12-12 09:26:40 +0100 |
| commit | f3d7ddcb540bb7ab77ff433fc94cb738ee38cf39 (patch) | |
| tree | a18fa9a9466783c26184b196221a0d976c44995d | |
| parent | 786befb39e7048cf385e1b9c5c37a24238e05334 (diff) | |
| download | perlweeklychallenge-club-f3d7ddcb540bb7ab77ff433fc94cb738ee38cf39.tar.gz perlweeklychallenge-club-f3d7ddcb540bb7ab77ff433fc94cb738ee38cf39.tar.bz2 perlweeklychallenge-club-f3d7ddcb540bb7ab77ff433fc94cb738ee38cf39.zip | |
Task 2 plperl done
| -rw-r--r-- | challenge-195/luca-ferrari/postgresql/ch-2.plperl | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/challenge-195/luca-ferrari/postgresql/ch-2.plperl b/challenge-195/luca-ferrari/postgresql/ch-2.plperl new file mode 100644 index 0000000000..b15f6b215b --- /dev/null +++ b/challenge-195/luca-ferrari/postgresql/ch-2.plperl @@ -0,0 +1,29 @@ +-- Perl Weekly Challenge 195 +-- Task 2 + +CREATE SCHEMA IF NOT EXISTS pwc195; + +CREATE OR REPLACE FUNCTION +pwc195.task2_plperl( int[] ) +RETURNS int +AS $CODE$ + my ( $array ) = @_; + # extract only evens + my @evens = grep { $_ % 2 == 0 } $array->@*; + # classify frequency + my $bag = {}; + $bag->{ $_ }++ for ( @evens ); + + + # sort by frequency and value + my @sorted_bag = + map { $_->[1] } + sort { $a->[0] <=> $b->[0] || $a->[1] <=> $b->[1] } + map { [ $bag->{ $_ }, $_ ] } keys $bag->%*; + + + # the first value in the list is the + # one with the max frequency and the lowest value + return $sorted_bag[ 0 ]; +$CODE$ +LANGUAGE plperl; |
