aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-11-28 14:13:02 +0000
committerGitHub <noreply@github.com>2022-11-28 14:13:02 +0000
commit566693d6f429cf2f7494f13fa98dbad84b6af06f (patch)
tree507668b82dc86d656383c4130013d8bd8a469732
parent6ce4cff592bdb162ea337b0c4ed948d910093064 (diff)
parent76a95f756421c4e1dd71dac90f862e052e44122d (diff)
downloadperlweeklychallenge-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.txt1
-rw-r--r--challenge-193/luca-ferrari/blog-2.txt1
-rw-r--r--challenge-193/luca-ferrari/blog-3.txt1
-rw-r--r--challenge-193/luca-ferrari/blog-4.txt1
-rw-r--r--challenge-193/luca-ferrari/blog-5.txt1
-rw-r--r--challenge-193/luca-ferrari/blog-6.txt1
-rw-r--r--challenge-193/luca-ferrari/postgresql/ch-1.plperl20
-rw-r--r--challenge-193/luca-ferrari/postgresql/ch-1.sql20
-rw-r--r--challenge-193/luca-ferrari/postgresql/ch-2.plperl30
-rw-r--r--challenge-193/luca-ferrari/postgresql/ch-2.sql84
-rw-r--r--challenge-193/luca-ferrari/raku/ch-1.p610
-rw-r--r--challenge-193/luca-ferrari/raku/ch-2.p619
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;
+ }
+
+}