diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2023-01-10 18:18:38 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-10 18:18:38 +0000 |
| commit | cc4135bf8efb178f2d376d66177d93c1e3d5bd09 (patch) | |
| tree | 972d3f46f9be95a9fbbac99f89c91e0b3df062c9 /challenge-199 | |
| parent | 19f4560afd64aff1a36e5864da3c5dedd8da9d5a (diff) | |
| parent | e75035e4a753f914fa5ecf79ac6fa6ba11cf737f (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rw-r--r-- | challenge-199/luca-ferrari/blog-2.txt | 1 | ||||
| -rw-r--r-- | challenge-199/luca-ferrari/blog-3.txt | 1 | ||||
| -rw-r--r-- | challenge-199/luca-ferrari/blog-4.txt | 1 | ||||
| -rw-r--r-- | challenge-199/luca-ferrari/blog-5.txt | 1 | ||||
| -rw-r--r-- | challenge-199/luca-ferrari/blog-6.txt | 1 | ||||
| -rw-r--r-- | challenge-199/luca-ferrari/postgresql/ch-1.plperl | 24 | ||||
| -rw-r--r-- | challenge-199/luca-ferrari/postgresql/ch-1.sql | 30 | ||||
| -rw-r--r-- | challenge-199/luca-ferrari/postgresql/ch-2.plperl | 34 | ||||
| -rw-r--r-- | challenge-199/luca-ferrari/postgresql/ch-2.sql | 29 | ||||
| -rw-r--r-- | challenge-199/luca-ferrari/raku/ch-1.p6 | 16 | ||||
| -rw-r--r-- | challenge-199/luca-ferrari/raku/ch-2.p6 | 33 |
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; +} |
