diff options
| -rw-r--r-- | challenge-328/luca-ferrari/blog-1.txt | 1 | ||||
| -rw-r--r-- | challenge-328/luca-ferrari/blog-2.txt | 1 | ||||
| -rw-r--r-- | challenge-328/luca-ferrari/blog-3.txt | 1 | ||||
| -rw-r--r-- | challenge-328/luca-ferrari/blog-4.txt | 1 | ||||
| -rw-r--r-- | challenge-328/luca-ferrari/pljava/pom.xml | 72 | ||||
| -rw-r--r-- | challenge-328/luca-ferrari/plperl/ch-1.plperl | 25 | ||||
| -rw-r--r-- | challenge-328/luca-ferrari/plperl/ch-2.plperl | 34 | ||||
| -rw-r--r-- | challenge-328/luca-ferrari/raku/ch-1.raku | 16 | ||||
| -rw-r--r-- | challenge-328/luca-ferrari/raku/ch-2.raku | 29 |
9 files changed, 108 insertions, 72 deletions
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 @@ - -<project - xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > - <modelVersion>4.0.0</modelVersion> - - <groupId>PWC</groupId> - <artifactId> - PWC326 - </artifactId> - <version> - 1 - </version> - - <name>Perl Weekly Challenge 326 with package PWC326</name> - <description>Implementation of the tasks in PL/Java for PWC 326</description> - - <properties> - <project.build.sourceEncoding>US-ASCII</project.build.sourceEncoding> - </properties> - - <dependencies> - <dependency> - <groupId>org.postgresql</groupId> - <artifactId>pljava-api</artifactId> - <version>1.6.6</version> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.8.1</version> - <configuration> - <release>9</release> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <version>2.6</version> - <configuration> - <archive> - <manifest> - <!-- This identifies and version-stamps the jar. - Not essential, but easy and useful. --> - <addDefaultImplementationEntries> - true - </addDefaultImplementationEntries> - </manifest> - - <manifestSections> - <!-- This identifies a file in the jar named - pljava.ddr as an SQLJDeploymentDescriptor. --> - <manifestSection> - <name>pljava.ddr</name> - <manifestEntries> - <SQLJDeploymentDescriptor> - true - </SQLJDeploymentDescriptor> - </manifestEntries> - </manifestSection> - </manifestSections> - </archive> - </configuration> - </plugin> - </plugins> - </build> -</project> 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 <https://perlweeklychallenge.org/blog/perl-weekly-challenge-328> +-- + +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 <https://perlweeklychallenge.org/blog/perl-weekly-challenge-328> +-- + +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 <https://perlweeklychallenge.org/blog/perl-weekly-challenge-328> +# + +sub MAIN( Str $string is copy where { $string ~~ / '?'+ / } ) { + $string.subst( / $<left>=(<[a .. z]>) <[?]> $<right>=(<[a .. z]>)? /, + { $<left> ~ ('a'..'z').grep( { $_ ne $<left> && $_ ne ( $<right> // '' ) } ).first ~ ( $<right> // '' ) }, + :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 <https://perlweeklychallenge.org/blog/perl-weekly-challenge-328> +# + +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; +} |
