diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-11-28 14:13:02 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-28 14:13:02 +0000 |
| commit | 566693d6f429cf2f7494f13fa98dbad84b6af06f (patch) | |
| tree | 507668b82dc86d656383c4130013d8bd8a469732 | |
| parent | 6ce4cff592bdb162ea337b0c4ed948d910093064 (diff) | |
| parent | 76a95f756421c4e1dd71dac90f862e052e44122d (diff) | |
| download | perlweeklychallenge-club-566693d6f429cf2f7494f13fa98dbad84b6af06f.tar.gz perlweeklychallenge-club-566693d6f429cf2f7494f13fa98dbad84b6af06f.tar.bz2 perlweeklychallenge-club-566693d6f429cf2f7494f13fa98dbad84b6af06f.zip | |
Merge pull request #7175 from fluca1978/PWC193
Pwc193
| -rw-r--r-- | challenge-193/luca-ferrari/blog-1.txt | 1 | ||||
| -rw-r--r-- | challenge-193/luca-ferrari/blog-2.txt | 1 | ||||
| -rw-r--r-- | challenge-193/luca-ferrari/blog-3.txt | 1 | ||||
| -rw-r--r-- | challenge-193/luca-ferrari/blog-4.txt | 1 | ||||
| -rw-r--r-- | challenge-193/luca-ferrari/blog-5.txt | 1 | ||||
| -rw-r--r-- | challenge-193/luca-ferrari/blog-6.txt | 1 | ||||
| -rw-r--r-- | challenge-193/luca-ferrari/postgresql/ch-1.plperl | 20 | ||||
| -rw-r--r-- | challenge-193/luca-ferrari/postgresql/ch-1.sql | 20 | ||||
| -rw-r--r-- | challenge-193/luca-ferrari/postgresql/ch-2.plperl | 30 | ||||
| -rw-r--r-- | challenge-193/luca-ferrari/postgresql/ch-2.sql | 84 | ||||
| -rw-r--r-- | challenge-193/luca-ferrari/raku/ch-1.p6 | 10 | ||||
| -rw-r--r-- | challenge-193/luca-ferrari/raku/ch-2.p6 | 19 |
12 files changed, 189 insertions, 0 deletions
diff --git a/challenge-193/luca-ferrari/blog-1.txt b/challenge-193/luca-ferrari/blog-1.txt new file mode 100644 index 0000000000..e385e8c7f8 --- /dev/null +++ b/challenge-193/luca-ferrari/blog-1.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2022/11/28/PerlWeeklyChallenge193.html#task1 diff --git a/challenge-193/luca-ferrari/blog-2.txt b/challenge-193/luca-ferrari/blog-2.txt new file mode 100644 index 0000000000..e42e975e3c --- /dev/null +++ b/challenge-193/luca-ferrari/blog-2.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2022/11/28/PerlWeeklyChallenge193.html#task2 diff --git a/challenge-193/luca-ferrari/blog-3.txt b/challenge-193/luca-ferrari/blog-3.txt new file mode 100644 index 0000000000..fcf2d0af89 --- /dev/null +++ b/challenge-193/luca-ferrari/blog-3.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2022/11/28/PerlWeeklyChallenge193.html#task1plperl diff --git a/challenge-193/luca-ferrari/blog-4.txt b/challenge-193/luca-ferrari/blog-4.txt new file mode 100644 index 0000000000..91d55b596f --- /dev/null +++ b/challenge-193/luca-ferrari/blog-4.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2022/11/28/PerlWeeklyChallenge193.html#task2plperl diff --git a/challenge-193/luca-ferrari/blog-5.txt b/challenge-193/luca-ferrari/blog-5.txt new file mode 100644 index 0000000000..40b71d317a --- /dev/null +++ b/challenge-193/luca-ferrari/blog-5.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2022/11/28/PerlWeeklyChallenge193.html#task1plpgsql diff --git a/challenge-193/luca-ferrari/blog-6.txt b/challenge-193/luca-ferrari/blog-6.txt new file mode 100644 index 0000000000..7770c8448a --- /dev/null +++ b/challenge-193/luca-ferrari/blog-6.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2022/11/28/PerlWeeklyChallenge193.html#task2plpgsql diff --git a/challenge-193/luca-ferrari/postgresql/ch-1.plperl b/challenge-193/luca-ferrari/postgresql/ch-1.plperl new file mode 100644 index 0000000000..69f3fc834c --- /dev/null +++ b/challenge-193/luca-ferrari/postgresql/ch-1.plperl @@ -0,0 +1,20 @@ +-- Perl Weekly Challenge 193 +-- Task 1 + +CREATE SCHEMA IF NOT EXISTS pwc193; + +CREATE OR REPLACE FUNCTION +pwc193.task1_plperl( int ) +RETURNS SETOF TEXT +AS $CODE$ + my ( $n ) = @_; + + my @bins = + map { '0' x ( $n - length( $_ ) ) . $_ } + map { sprintf "%b", $_ } + ( 0 .. 2 ** $n - 1 ); + + return_next( $_ ) for @bins; + return; +$CODE$ +LANGUAGE plperl; diff --git a/challenge-193/luca-ferrari/postgresql/ch-1.sql b/challenge-193/luca-ferrari/postgresql/ch-1.sql new file mode 100644 index 0000000000..83e2416a49 --- /dev/null +++ b/challenge-193/luca-ferrari/postgresql/ch-1.sql @@ -0,0 +1,20 @@ +-- Perl Weekly Challenge 193 +-- Task 1 + +CREATE SCHEMA IF NOT EXISTS pwc193; + +CREATE OR REPLACE FUNCTION +pwc193.task1_plpgsql( n int ) +RETURNS SETOF TEXT +AS $CODE$ +DECLARE + i int; +BEGIN + FOR i IN 0 .. pow( 2, n ) - 1 LOOP + RETURN NEXT i::bit( 24 )::text; + END LOOP; + + RETURN; +END +$CODE$ +LANGUAGE plpgsql; diff --git a/challenge-193/luca-ferrari/postgresql/ch-2.plperl b/challenge-193/luca-ferrari/postgresql/ch-2.plperl new file mode 100644 index 0000000000..7dd7b649e0 --- /dev/null +++ b/challenge-193/luca-ferrari/postgresql/ch-2.plperl @@ -0,0 +1,30 @@ +-- Perl Weekly Challenge 193 +-- Task 2 + +CREATE SCHEMA IF NOT EXISTS pwc193; + +CREATE OR REPLACE FUNCTION +pwc193.task2_plperl( text ) +RETURNS text +AS $CODE$ + my ( $current_string ) = @_; + my @chars = split '', $current_string; + my $counter = 0; + my %translations = map { $_ => $counter++ } ( 'a' .. 'z' ); + + my @values = map { $translations{ $_ } } @chars; + + my @difference; + for my $index ( 1 .. length( $current_string ) ) { + push @difference, $chars[ $_ ] - $chars[ $_ - 1 ]; + } + + if ( scalar( grep { $_ % 2 != 0 } @difference ) == @difference ) { + return $current_string; + } + else { + return undef; + } + +$CODE$ +LANGUAGE plperl; diff --git a/challenge-193/luca-ferrari/postgresql/ch-2.sql b/challenge-193/luca-ferrari/postgresql/ch-2.sql new file mode 100644 index 0000000000..7a9e8be234 --- /dev/null +++ b/challenge-193/luca-ferrari/postgresql/ch-2.sql @@ -0,0 +1,84 @@ +-- Perl Weekly Challenge 193 +-- Task 2 + +CREATE SCHEMA IF NOT EXISTS pwc193; + +CREATE OR REPLACE FUNCTION +pwc193.task2_plpgsql( s text ) +RETURNS text +AS $CODE$ +DECLARE + c char; + pre int; + cur int; + + count_all int; + count_odd int; +BEGIN + CREATE TEMPORARY TABLE IF NOT EXISTS translations( l char, i int DEFAULT 0 ); + TRUNCATE translations; + + INSERT INTO translations + VALUES + ( 'a', 0 ) + , ( 'b', 1 ) + , ( 'c', 2 ) + , ( 'd', 3 ) + , ( 'e', 4 ) + , ( 'f', 5 ) + , ( 'g', 6 ) + , ( 'h', 7 ) + , ( 'i', 8 ) + , ( 'j', 9 ) + , ( 'k', 10 ) + , ( 'l', 11 ) + , ( 'm', 12 ) + , ( 'n', 13 ) + , ( 'o', 14 ) + , ( 'p', 15 ) + , ( 'q', 16 ) + , ( 'r', 17 ) + , ( 's', 18 ) + , ( 't', 19 ) + , ( 'u', 20 ) + , ( 'v', 21 ) + , ( 'x', 22 ) + , ( 'y', 23 ) + , ( 'z', 24 ); + + + CREATE TEMPORARY TABLE IF NOT EXISTS result( v int ); + TRUNCATE result; + + FOR c IN SELECT regexp_split_to_table( s, '' ) LOOP + SELECT i + INTO cur + FROM translations + WHERE l = c; + + IF pre IS NOT NULL THEN + INSERT INTO result + SELECT cur - pre; + END IF; + + pre := cur; + END LOOP; + + + SELECT count( * ) + INTO count_all + FROM result; + + SELECT count(*) + INTO count_odd + FROM result + WHERE V % 2 <> 0; + + IF count_all <> count_odd THEN + RETURN NULL; + ELSE + RETURN s; + END IF; +END +$CODE$ +LANGUAGE plpgsql; diff --git a/challenge-193/luca-ferrari/raku/ch-1.p6 b/challenge-193/luca-ferrari/raku/ch-1.p6 new file mode 100644 index 0000000000..d2abb1a1f4 --- /dev/null +++ b/challenge-193/luca-ferrari/raku/ch-1.p6 @@ -0,0 +1,10 @@ +#!raku + +# Perl Weekly Challenge 193 + +sub MAIN( Int $n where { $n > 0 } ) { + + my @bins = ( 0 .. 2 ** $n - 1 ).map( { sprintf "%b", $_ } ).map( { '0' x ( $n - $_.chars ) ~ $_ } ); + + @bins.join( ', ' ).say; +} diff --git a/challenge-193/luca-ferrari/raku/ch-2.p6 b/challenge-193/luca-ferrari/raku/ch-2.p6 new file mode 100644 index 0000000000..57bac7bf61 --- /dev/null +++ b/challenge-193/luca-ferrari/raku/ch-2.p6 @@ -0,0 +1,19 @@ +#!raku + +# Perl Weekly Challenge 193 + +sub MAIN( *@s ) { + my %translations = ( 'a' .. 'z' ).map( { state $counter = 0; $_ => $counter++ } ); + + my %strings = @s.map( { $_ => $_.lc.comb.map( { %translations{ $_ } } ) } ); + + for %strings.kv -> $current-string, $current-array { + my @difference; + for 1 ..^ $current-array.elems { + @difference.push: $current-array[ $_ ] - $current-array[ $_ - 1 ]; + } + + $current-string.say if @difference.grep( { $_ !%% 2 } ).elems == @difference.elems; + } + +} |
