aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2023-04-11 09:55:14 +0200
committerLuca Ferrari <fluca1978@gmail.com>2023-04-11 09:55:44 +0200
commit6ce8eb1a0a663ae72e09a7b323b54b10a4404328 (patch)
treeb5a08e0ff6e67ae65f122b0441839e0b29b1d5a3
parente0c7b655d10cd2b9d99cb0fd2db88dc1260d2351 (diff)
downloadperlweeklychallenge-club-6ce8eb1a0a663ae72e09a7b323b54b10a4404328.tar.gz
perlweeklychallenge-club-6ce8eb1a0a663ae72e09a7b323b54b10a4404328.tar.bz2
perlweeklychallenge-club-6ce8eb1a0a663ae72e09a7b323b54b10a4404328.zip
Task 1 PL/Perl done
-rw-r--r--challenge-212/luca-ferrari/postgresql/ch-1.plperl37
1 files changed, 37 insertions, 0 deletions
diff --git a/challenge-212/luca-ferrari/postgresql/ch-1.plperl b/challenge-212/luca-ferrari/postgresql/ch-1.plperl
new file mode 100644
index 0000000000..861e11fe9d
--- /dev/null
+++ b/challenge-212/luca-ferrari/postgresql/ch-1.plperl
@@ -0,0 +1,37 @@
+--
+-- Perl Weekly Challenge 212
+-- Task 1
+-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-212/>
+--
+
+CREATE SCHEMA IF NOT EXISTS pwc212;
+
+
+
+CREATE OR REPLACE FUNCTION
+pwc212.task1_plperl( text, int[] )
+RETURNS text
+AS $CODE$
+ my ( $string, $jumps ) = @_;
+ my @alphabet = 'a' .. 'z';
+
+ my $find_index = sub {
+ my ( $letter ) = @_;
+ for my $index ( 0 .. scalar( @alphabet ) ) {
+ return $index if ( $alphabet[ $index ] eq $letter );
+ }
+ };
+
+ my $offset = 0;
+ my @word;
+ for my $letter ( split //, $string ) {
+ my $index = $find_index->( $letter );
+ $index += $jumps->[ $offset++ ];
+ $index %= @alphabet;
+ push @word, $alphabet[ $index ];
+ }
+
+ return join( '', @word );
+
+$CODE$
+LANGUAGE plperl;