diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2022-12-12 09:11:27 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2022-12-12 09:11:27 +0100 |
| commit | 786befb39e7048cf385e1b9c5c37a24238e05334 (patch) | |
| tree | 2581b791877d764f014c8003f0f534d8f8dc5e5a | |
| parent | 77d6f3b11a9014e30e505808ab9a24a40ca3873f (diff) | |
| download | perlweeklychallenge-club-786befb39e7048cf385e1b9c5c37a24238e05334.tar.gz perlweeklychallenge-club-786befb39e7048cf385e1b9c5c37a24238e05334.tar.bz2 perlweeklychallenge-club-786befb39e7048cf385e1b9c5c37a24238e05334.zip | |
Task 1 PL/Perl done
| -rw-r--r-- | challenge-195/luca-ferrari/postgresql/ch-1.plperl | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/challenge-195/luca-ferrari/postgresql/ch-1.plperl b/challenge-195/luca-ferrari/postgresql/ch-1.plperl new file mode 100644 index 0000000000..3ea8594add --- /dev/null +++ b/challenge-195/luca-ferrari/postgresql/ch-1.plperl @@ -0,0 +1,40 @@ +-- Perl Weekly Challenge 195 +-- Task 1 + +CREATE SCHEMA IF NOT EXISTS pwc195; + +CREATE OR REPLACE FUNCTION +pwc195.task1_plperl( int, bool default true ) +RETURNS int +AS $CODE$ + my ( $n, $verbose ) = @_; + my @special_integers; + + my $baggify = sub { + my ( $n ) = @_; + my $bag = {}; + for my $digit ( split '', $n ) { + $bag->{ $digit }++; + } + + return $bag; + }; + + my $has_no_repetitions = sub { + my ( $bag ) = @_; + for ( keys $bag->%* ) { + return 0 if $bag->{ $_ } != 1; + } + + return 1; + }; + + for ( 1 .. $n ) { + push @special_integers, $_ if ( $has_no_repetitions->( $baggify->( $_ ) ) ); + } + + elog( INFO, "Found: " . join( ',', @special_integers ) ) if ( $ verbose ); + return scalar @special_integers; + +$CODE$ +LANGUAGE plperl; |
