diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2023-04-11 09:55:14 +0200 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2023-04-11 09:55:44 +0200 |
| commit | 6ce8eb1a0a663ae72e09a7b323b54b10a4404328 (patch) | |
| tree | b5a08e0ff6e67ae65f122b0441839e0b29b1d5a3 | |
| parent | e0c7b655d10cd2b9d99cb0fd2db88dc1260d2351 (diff) | |
| download | perlweeklychallenge-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.plperl | 37 |
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; |
