aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2022-12-12 09:11:27 +0100
committerLuca Ferrari <fluca1978@gmail.com>2022-12-12 09:11:27 +0100
commit786befb39e7048cf385e1b9c5c37a24238e05334 (patch)
tree2581b791877d764f014c8003f0f534d8f8dc5e5a
parent77d6f3b11a9014e30e505808ab9a24a40ca3873f (diff)
downloadperlweeklychallenge-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.plperl40
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;