From 75c7ba7c8f17f8a431a23ca2bbad6972c2de19a7 Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Thu, 3 Jul 2025 10:40:44 +0200 Subject: PWC 328 Task 1 Raku done Task 2 Raku done Task 1 PL/Perl done Task 2 PL/Perl done --- challenge-328/luca-ferrari/blog-1.txt | 1 + challenge-328/luca-ferrari/blog-2.txt | 1 + challenge-328/luca-ferrari/blog-3.txt | 1 + challenge-328/luca-ferrari/blog-4.txt | 1 + challenge-328/luca-ferrari/pljava/pom.xml | 72 --------------------------- challenge-328/luca-ferrari/plperl/ch-1.plperl | 25 ++++++++++ challenge-328/luca-ferrari/plperl/ch-2.plperl | 34 +++++++++++++ challenge-328/luca-ferrari/raku/ch-1.raku | 16 ++++++ challenge-328/luca-ferrari/raku/ch-2.raku | 29 +++++++++++ 9 files changed, 108 insertions(+), 72 deletions(-) create mode 100644 challenge-328/luca-ferrari/blog-1.txt create mode 100644 challenge-328/luca-ferrari/blog-2.txt create mode 100644 challenge-328/luca-ferrari/blog-3.txt create mode 100644 challenge-328/luca-ferrari/blog-4.txt delete mode 100644 challenge-328/luca-ferrari/pljava/pom.xml create mode 100644 challenge-328/luca-ferrari/plperl/ch-1.plperl create mode 100644 challenge-328/luca-ferrari/plperl/ch-2.plperl create mode 100644 challenge-328/luca-ferrari/raku/ch-1.raku create mode 100644 challenge-328/luca-ferrari/raku/ch-2.raku diff --git a/challenge-328/luca-ferrari/blog-1.txt b/challenge-328/luca-ferrari/blog-1.txt new file mode 100644 index 0000000000..c31617d70c --- /dev/null +++ b/challenge-328/luca-ferrari/blog-1.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2025/07/03/PerlWeeklyChallenge328.html#task1 diff --git a/challenge-328/luca-ferrari/blog-2.txt b/challenge-328/luca-ferrari/blog-2.txt new file mode 100644 index 0000000000..7fa6c4b897 --- /dev/null +++ b/challenge-328/luca-ferrari/blog-2.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2025/07/03/PerlWeeklyChallenge328.html#task2 diff --git a/challenge-328/luca-ferrari/blog-3.txt b/challenge-328/luca-ferrari/blog-3.txt new file mode 100644 index 0000000000..06d7603168 --- /dev/null +++ b/challenge-328/luca-ferrari/blog-3.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2025/07/03/PerlWeeklyChallenge328.html#task1plperl diff --git a/challenge-328/luca-ferrari/blog-4.txt b/challenge-328/luca-ferrari/blog-4.txt new file mode 100644 index 0000000000..4e48f79a2f --- /dev/null +++ b/challenge-328/luca-ferrari/blog-4.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2025/07/03/PerlWeeklyChallenge328.html#task2plperl diff --git a/challenge-328/luca-ferrari/pljava/pom.xml b/challenge-328/luca-ferrari/pljava/pom.xml deleted file mode 100644 index 7b9dc8a6c5..0000000000 --- a/challenge-328/luca-ferrari/pljava/pom.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - 4.0.0 - - PWC - - PWC326 - - - 1 - - - Perl Weekly Challenge 326 with package PWC326 - Implementation of the tasks in PL/Java for PWC 326 - - - US-ASCII - - - - - org.postgresql - pljava-api - 1.6.6 - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - 9 - - - - org.apache.maven.plugins - maven-jar-plugin - 2.6 - - - - - - true - - - - - - - pljava.ddr - - - true - - - - - - - - - - diff --git a/challenge-328/luca-ferrari/plperl/ch-1.plperl b/challenge-328/luca-ferrari/plperl/ch-1.plperl new file mode 100644 index 0000000000..d712c2ae5d --- /dev/null +++ b/challenge-328/luca-ferrari/plperl/ch-1.plperl @@ -0,0 +1,25 @@ +-- +-- Perl Weekly Challenge 328 +-- Task 1 +-- See +-- + +CREATE SCHEMA IF NOT EXISTS pwc328; + +CREATE OR REPLACE FUNCTION +pwc328.task1_plperl( text ) +RETURNS text +AS $CODE$ + + my ( $string ) = @_; + + while ( $string =~ / ([a-z]) [?] ([a-z])? /x ) { + my $question_mark = ( grep { $_ ne $1 && $_ ne $2 } ( 'a' .. 'z' ) )[ 0 ]; + my $replacement = $1 . $question_mark . $2; + $string =~ s/([a-z]) [?] ([a-z])?/$replacement/x; + } + + return $string; + +$CODE$ +LANGUAGE plperl; diff --git a/challenge-328/luca-ferrari/plperl/ch-2.plperl b/challenge-328/luca-ferrari/plperl/ch-2.plperl new file mode 100644 index 0000000000..90cd1fba38 --- /dev/null +++ b/challenge-328/luca-ferrari/plperl/ch-2.plperl @@ -0,0 +1,34 @@ +-- +-- Perl Weekly Challenge 328 +-- Task 2 +-- See +-- + +CREATE SCHEMA IF NOT EXISTS pwc328; + +CREATE OR REPLACE FUNCTION +pwc328.task2_plperl( text ) +RETURNS text +AS $CODE$ + + my ( $string ) = @_; + + $string = lc $string; + my @chars = split //, $string; + my @result; + + my $index = 0; + for ( 0 .. $#chars ) { + if ( $chars[ $index ] eq $chars[ $index + 1 ] ) { + $index += 2; + } + else { + push @result, $chars[ $index ]; + $index++; + } + } + + return join( '', @result ); + +$CODE$ +LANGUAGE plperl; diff --git a/challenge-328/luca-ferrari/raku/ch-1.raku b/challenge-328/luca-ferrari/raku/ch-1.raku new file mode 100644 index 0000000000..829eece280 --- /dev/null +++ b/challenge-328/luca-ferrari/raku/ch-1.raku @@ -0,0 +1,16 @@ +#!raku + +# +# Perl Weekly Challenge 328 +# Task 1 +# +# See +# + +sub MAIN( Str $string is copy where { $string ~~ / '?'+ / } ) { + $string.subst( / $=(<[a .. z]>) <[?]> $=(<[a .. z]>)? /, + { $ ~ ('a'..'z').grep( { $_ ne $ && $_ ne ( $ // '' ) } ).first ~ ( $ // '' ) }, + :g ) + .say; + +} diff --git a/challenge-328/luca-ferrari/raku/ch-2.raku b/challenge-328/luca-ferrari/raku/ch-2.raku new file mode 100644 index 0000000000..971f04a4e8 --- /dev/null +++ b/challenge-328/luca-ferrari/raku/ch-2.raku @@ -0,0 +1,29 @@ +#!raku + +# +# Perl Weekly Challenge 328 +# Task 2 +# +# See +# + +sub MAIN( Str $string is copy where { $string ~~ / ^ <[a..zA..Z]>+ $ / } ) { + + my @chars = $string.lc.comb; + my @result; + my $index = 0; + + while ( $index < @chars.elems ) { + @result.push: @chars[ $index ] and last if ( $index == @chars.elems - 1 ); + + if ( @chars[ $index ] ne @chars[ $index + 1 ] ) { + @result.push: @chars[ $index ]; + $index++; + } + else { + $index += 2; + } + } + + @result.join.say; +} -- cgit