aboutsummaryrefslogtreecommitdiff
path: root/challenge-199
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-01-10 18:18:38 +0000
committerGitHub <noreply@github.com>2023-01-10 18:18:38 +0000
commitcc4135bf8efb178f2d376d66177d93c1e3d5bd09 (patch)
tree972d3f46f9be95a9fbbac99f89c91e0b3df062c9 /challenge-199
parent19f4560afd64aff1a36e5864da3c5dedd8da9d5a (diff)
parente75035e4a753f914fa5ecf79ac6fa6ba11cf737f (diff)
downloadperlweeklychallenge-club-cc4135bf8efb178f2d376d66177d93c1e3d5bd09.tar.gz
perlweeklychallenge-club-cc4135bf8efb178f2d376d66177d93c1e3d5bd09.tar.bz2
perlweeklychallenge-club-cc4135bf8efb178f2d376d66177d93c1e3d5bd09.zip
Merge pull request #7385 from fluca1978/PWC199
Pwc199
Diffstat (limited to 'challenge-199')
-rw-r--r--challenge-199/luca-ferrari/blog-1.txt1
-rw-r--r--challenge-199/luca-ferrari/blog-2.txt1
-rw-r--r--challenge-199/luca-ferrari/blog-3.txt1
-rw-r--r--challenge-199/luca-ferrari/blog-4.txt1
-rw-r--r--challenge-199/luca-ferrari/blog-5.txt1
-rw-r--r--challenge-199/luca-ferrari/blog-6.txt1
-rw-r--r--challenge-199/luca-ferrari/postgresql/ch-1.plperl24
-rw-r--r--challenge-199/luca-ferrari/postgresql/ch-1.sql30
-rw-r--r--challenge-199/luca-ferrari/postgresql/ch-2.plperl34
-rw-r--r--challenge-199/luca-ferrari/postgresql/ch-2.sql29
-rw-r--r--challenge-199/luca-ferrari/raku/ch-1.p616
-rw-r--r--challenge-199/luca-ferrari/raku/ch-2.p633
12 files changed, 172 insertions, 0 deletions
diff --git a/challenge-199/luca-ferrari/blog-1.txt b/challenge-199/luca-ferrari/blog-1.txt
new file mode 100644
index 0000000000..8c4c66cc1d
--- /dev/null
+++ b/challenge-199/luca-ferrari/blog-1.txt
@@ -0,0 +1 @@
+https://fluca1978.github.io/2023/01/09/PerlWeeklyChallenge199.html#task1
diff --git a/challenge-199/luca-ferrari/blog-2.txt b/challenge-199/luca-ferrari/blog-2.txt
new file mode 100644
index 0000000000..e68ed0b365
--- /dev/null
+++ b/challenge-199/luca-ferrari/blog-2.txt
@@ -0,0 +1 @@
+https://fluca1978.github.io/2023/01/09/PerlWeeklyChallenge199.html#task2
diff --git a/challenge-199/luca-ferrari/blog-3.txt b/challenge-199/luca-ferrari/blog-3.txt
new file mode 100644
index 0000000000..512ab8604a
--- /dev/null
+++ b/challenge-199/luca-ferrari/blog-3.txt
@@ -0,0 +1 @@
+https://fluca1978.github.io/2023/01/09/PerlWeeklyChallenge199.html#task1plperl
diff --git a/challenge-199/luca-ferrari/blog-4.txt b/challenge-199/luca-ferrari/blog-4.txt
new file mode 100644
index 0000000000..8691d12193
--- /dev/null
+++ b/challenge-199/luca-ferrari/blog-4.txt
@@ -0,0 +1 @@
+https://fluca1978.github.io/2023/01/09/PerlWeeklyChallenge199.html#task2plperl
diff --git a/challenge-199/luca-ferrari/blog-5.txt b/challenge-199/luca-ferrari/blog-5.txt
new file mode 100644
index 0000000000..f4863bd5a1
--- /dev/null
+++ b/challenge-199/luca-ferrari/blog-5.txt
@@ -0,0 +1 @@
+https://fluca1978.github.io/2023/01/09/PerlWeeklyChallenge199.html#task1plpgsql
diff --git a/challenge-199/luca-ferrari/blog-6.txt b/challenge-199/luca-ferrari/blog-6.txt
new file mode 100644
index 0000000000..56ea3afbd6
--- /dev/null
+++ b/challenge-199/luca-ferrari/blog-6.txt
@@ -0,0 +1 @@
+https://fluca1978.github.io/2023/01/09/PerlWeeklyChallenge199.html#task2plpgsql
diff --git a/challenge-199/luca-ferrari/postgresql/ch-1.plperl b/challenge-199/luca-ferrari/postgresql/ch-1.plperl
new file mode 100644
index 0000000000..7b91f9a3f9
--- /dev/null
+++ b/challenge-199/luca-ferrari/postgresql/ch-1.plperl
@@ -0,0 +1,24 @@
+-- Perl Weekly Challenge 199
+-- Task 1
+
+CREATE SCHEMA IF NOT EXISTS pwc199;
+
+CREATE OR REPLACE FUNCTION
+pwc199.task1_plperl( int[] )
+RETURNS int
+AS $CODE$
+
+ my ( $list ) = @_;
+ my @pairs;
+
+ for my $i ( 0 .. $list->@* ) {
+ for my $j ( $i .. $list->@* ) {
+ next if $i == $j;
+ push @pairs, [ $i, $j ] if ( $list->[ $i ] == $list->[ $j ] );
+ }
+ }
+
+ return scalar @pairs;
+
+$CODE$
+LANGUAGE plperl;
diff --git a/challenge-199/luca-ferrari/postgresql/ch-1.sql b/challenge-199/luca-ferrari/postgresql/ch-1.sql
new file mode 100644
index 0000000000..0eda98d91a
--- /dev/null
+++ b/challenge-199/luca-ferrari/postgresql/ch-1.sql
@@ -0,0 +1,30 @@
+-- Perl Weekly Challenge 199
+-- Task 1
+
+CREATE SCHEMA IF NOT EXISTS pwc199;
+
+CREATE OR REPLACE FUNCTION
+pwc199.task1_plpgsql( l int[] )
+RETURNS int
+AS $CODE$
+DECLARE
+ i int;
+ j int;
+ c int := 0;
+BEGIN
+ FOR i IN 1 .. array_length( l, 1 ) LOOP
+ FOR j IN i .. array_length( l , 1 ) LOOP
+ If i = j THEN
+ CONTINUE;
+ END IF;
+
+ IF l[i] = l[j] THEN
+ c := c + 1;
+ END IF;
+ END LOOP;
+ END LOOP;
+
+ RETURN c;
+END
+$CODE$
+LANGUAGE plpgsql;
diff --git a/challenge-199/luca-ferrari/postgresql/ch-2.plperl b/challenge-199/luca-ferrari/postgresql/ch-2.plperl
new file mode 100644
index 0000000000..5063643e27
--- /dev/null
+++ b/challenge-199/luca-ferrari/postgresql/ch-2.plperl
@@ -0,0 +1,34 @@
+-- Perl Weekly Challenge 199
+-- Task 2
+
+CREATE SCHEMA IF NOT EXISTS pwc199;
+
+/*
+estdb=> select pwc199.task2_plperl( 7,2,3, array[3,0,1,1,9,7]::int[] );
+ task2_plperl
+--------------
+ 4
+
+*/
+CREATE OR REPLACE FUNCTION
+pwc199.task2_plperl( int, int, int, int[] )
+RETURNS int
+AS $CODE$
+ my ( $x, $y, $z, $list ) = @_;
+ my @triplets;
+
+ for my $i ( 0 .. $list->@* ) {
+ for my $j ( $i + 1 .. $list->@* - 1 ) {
+ for my $k ( $j + 1 .. $list->@* - 2 ) {
+
+ push @triplets, [ $i, $j, $k ] if ( abs( $list->[ $i ] - $list->[ $j ] ) <= $x
+ && abs( $list->[ $j ] - $list->[ $k ] ) <= $y
+ && abs( $list->[ $i ] - $list->[ $k ] ) <= $z );
+ }
+ }
+ }
+
+
+ return scalar @triplets;
+$CODE$
+LANGUAGE plperl;
diff --git a/challenge-199/luca-ferrari/postgresql/ch-2.sql b/challenge-199/luca-ferrari/postgresql/ch-2.sql
new file mode 100644
index 0000000000..0fcdaff71a
--- /dev/null
+++ b/challenge-199/luca-ferrari/postgresql/ch-2.sql
@@ -0,0 +1,29 @@
+-- Perl Weekly Challenge 199
+-- Task 2
+
+CREATE SCHEMA IF NOT EXISTS pwc199;
+
+CREATE OR REPLACE FUNCTION
+pwc199.task2_plpgsql( x int, y int, z int, l int[] )
+RETURNS int
+AS $CODE$
+DECLARE
+ i int;
+ j int;
+ k int;
+ c int := 0;
+BEGIN
+ FOR i IN 1 .. array_length( l, 1 ) LOOP
+ FOR j IN ( i + 1 ) .. array_length( l, 1 ) LOOP
+ FOR k IN ( j + 1 ) .. array_length( l, 1 ) LOOP
+ IF abs( l[i] - l[j] ) <= x AND abs( l[j] - l[k] ) <= y AND abs( l[i] - l[k] ) <= z THEN
+ c := c + 1;
+ END IF;
+ END LOOP;
+ END LOOP;
+ END LOOP;
+
+ RETURN c;
+END
+$CODE$
+LANGUAGE plpgsql;
diff --git a/challenge-199/luca-ferrari/raku/ch-1.p6 b/challenge-199/luca-ferrari/raku/ch-1.p6
new file mode 100644
index 0000000000..3387fc252b
--- /dev/null
+++ b/challenge-199/luca-ferrari/raku/ch-1.p6
@@ -0,0 +1,16 @@
+#!raku
+
+# Perl Weekly Challenge 199
+
+sub MAIN( Bool :$verbose = False,
+ *@list where { @list.grep( * ~~ Int ).elems == @list.elems } ) {
+ my @pair-indexes;
+ for 0 ..^ @list.elems - 1 -> $i {
+ for $i + 1 ..^ @list.elems -> $j {
+ @pair-indexes.push: [ $i, $j, @list[ $i ], @list[ $j ] ] if @list[ $i ] == @list[ $j ];
+ }
+ }
+
+ @pair-indexes.elems.say;
+ @pair-indexes.map( { 'Idexes ' ~ $_[0] ~ ',' ~ $_[1] ~ ' refer to equal elements ' ~ $_[2] ~ ',' ~ $_[3] } ).join( "\n" ).say if $verbose;
+}
diff --git a/challenge-199/luca-ferrari/raku/ch-2.p6 b/challenge-199/luca-ferrari/raku/ch-2.p6
new file mode 100644
index 0000000000..05cc0159a8
--- /dev/null
+++ b/challenge-199/luca-ferrari/raku/ch-2.p6
@@ -0,0 +1,33 @@
+#!raku
+
+# Perl Weekly Challenge 199
+
+sub MAIN(
+ Int $x,
+ Int $y,
+ Int $z,
+ Bool :$verbose = False,
+ *@list where { @list.grep( * ~~ Int ).elems == @list.elems } ) {
+
+
+# a) 0 <= i < j < k <= n (size of given array)
+# b) abs(array[i] - array[j]) <= x
+# c) abs(array[j] - array[k]) <= y
+# d) abs(array[i] - array[k]) <= z
+
+ my @triplets;
+ for 0 ..^ @list.elems -> $i {
+ for $i ^..^@list.elems -> $j {
+ for $j ^..^ @list.elems -> $k {
+ @triplets.push: [ $i, $j, $k, @list[ $i ], @list[ $j ], @list[ $k ] ]
+ if ( ( @list[ $i ] - @list[ $j ] ).abs <= $x
+ && ( @list[ $j ] - @list[ $k ] ).abs <= $y
+ && ( @list[ $i ] - @list[ $k ] ).abs <= $z );
+
+ }
+ }
+ }
+
+ @triplets.elems.say;
+ @triplets.map( { "Indexes $_[0], $_[1], $_[2] are good ($_[3], $_[4], $_[5])" } ).join( "\n" ).say;
+}