diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2023-11-20 09:34:55 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2023-11-20 10:41:25 +0100 |
| commit | be57b29fa89ca15be60b8093c73e25e4e5ff5a35 (patch) | |
| tree | 65735009f0cf7988ba1997780bf8f897c02cd9a9 | |
| parent | d3c171ecb6715a7bd21a52fab583c4171605f5c0 (diff) | |
| download | perlweeklychallenge-club-be57b29fa89ca15be60b8093c73e25e4e5ff5a35.tar.gz perlweeklychallenge-club-be57b29fa89ca15be60b8093c73e25e4e5ff5a35.tar.bz2 perlweeklychallenge-club-be57b29fa89ca15be60b8093c73e25e4e5ff5a35.zip | |
PWC 244
Task 1 Raku done
Task 2 Raku done
Task 1 PL/Perl done
Task 2 PL/Perl done
Task 1 PL/PgSQL done
Task 2 PL/PgSQL done
Task 1 Python done
Task 2 Python done
| -rw-r--r-- | challenge-244/luca-ferrari/blog-1.txt | 1 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/blog-2.txt | 1 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/blog-3.txt | 1 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/blog-4.txt | 1 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/blog-5.txt | 1 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/blog-6.txt | 1 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/blog-7.txt | 1 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/blog-8.txt | 1 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/postgresql/ch-1.plperl | 21 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/postgresql/ch-1.sql | 30 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/postgresql/ch-2.plperl | 31 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/postgresql/ch-2.sql | 16 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/python/ch-1.py | 27 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/python/ch-2.py | 30 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/raku/ch-1.p6 | 14 | ||||
| -rw-r--r-- | challenge-244/luca-ferrari/raku/ch-2.p6 | 19 |
16 files changed, 196 insertions, 0 deletions
diff --git a/challenge-244/luca-ferrari/blog-1.txt b/challenge-244/luca-ferrari/blog-1.txt new file mode 100644 index 0000000000..c65ff728ca --- /dev/null +++ b/challenge-244/luca-ferrari/blog-1.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2023/11/20/PerlWeeklyChallenge244.html#task1 diff --git a/challenge-244/luca-ferrari/blog-2.txt b/challenge-244/luca-ferrari/blog-2.txt new file mode 100644 index 0000000000..35156948f9 --- /dev/null +++ b/challenge-244/luca-ferrari/blog-2.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2023/11/20/PerlWeeklyChallenge244.html#task2 diff --git a/challenge-244/luca-ferrari/blog-3.txt b/challenge-244/luca-ferrari/blog-3.txt new file mode 100644 index 0000000000..1c643ba5d9 --- /dev/null +++ b/challenge-244/luca-ferrari/blog-3.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2023/11/20/PerlWeeklyChallenge244.html#task1plperl diff --git a/challenge-244/luca-ferrari/blog-4.txt b/challenge-244/luca-ferrari/blog-4.txt new file mode 100644 index 0000000000..117b1d5479 --- /dev/null +++ b/challenge-244/luca-ferrari/blog-4.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2023/11/20/PerlWeeklyChallenge244.html#task2plperl diff --git a/challenge-244/luca-ferrari/blog-5.txt b/challenge-244/luca-ferrari/blog-5.txt new file mode 100644 index 0000000000..ae6051e804 --- /dev/null +++ b/challenge-244/luca-ferrari/blog-5.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2023/11/20/PerlWeeklyChallenge244.html#task1plpgsql diff --git a/challenge-244/luca-ferrari/blog-6.txt b/challenge-244/luca-ferrari/blog-6.txt new file mode 100644 index 0000000000..bc37b8e9ba --- /dev/null +++ b/challenge-244/luca-ferrari/blog-6.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2023/11/20/PerlWeeklyChallenge244.html#task2plpgsql diff --git a/challenge-244/luca-ferrari/blog-7.txt b/challenge-244/luca-ferrari/blog-7.txt new file mode 100644 index 0000000000..23a8f96738 --- /dev/null +++ b/challenge-244/luca-ferrari/blog-7.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2023/11/20/PerlWeeklyChallenge244.html#task1python diff --git a/challenge-244/luca-ferrari/blog-8.txt b/challenge-244/luca-ferrari/blog-8.txt new file mode 100644 index 0000000000..6ba9a186ac --- /dev/null +++ b/challenge-244/luca-ferrari/blog-8.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2023/11/20/PerlWeeklyChallenge244.html#task2python diff --git a/challenge-244/luca-ferrari/postgresql/ch-1.plperl b/challenge-244/luca-ferrari/postgresql/ch-1.plperl new file mode 100644 index 0000000000..69df98c4d1 --- /dev/null +++ b/challenge-244/luca-ferrari/postgresql/ch-1.plperl @@ -0,0 +1,21 @@ +-- +-- Perl Weekly Challenge 244 +-- Task 1 +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-244/> +-- + +CREATE SCHEMA IF NOT EXISTS pwc244; + +CREATE OR REPLACE FUNCTION +pwc244.task1_plperl( int[] ) +RETURNS SETOF int +AS $CODE$ + my ( $nums ) = @_; + + for my $needle ( $nums->@* ) { + return_next( scalar( grep( { $_ > $needle } $nums->@* ) ) ); + } + + return undef; +$CODE$ +LANGUAGE plperl; diff --git a/challenge-244/luca-ferrari/postgresql/ch-1.sql b/challenge-244/luca-ferrari/postgresql/ch-1.sql new file mode 100644 index 0000000000..ea1736ea87 --- /dev/null +++ b/challenge-244/luca-ferrari/postgresql/ch-1.sql @@ -0,0 +1,30 @@ +-- +-- Perl Weekly Challenge 244 +-- Task 1 +-- +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-244/> +-- + +CREATE SCHEMA IF NOT EXISTS pwc244; + +CREATE OR REPLACE FUNCTION +pwc244.task1_plpgsql( nums int[] ) +RETURNS SETOF int +AS $CODE$ +DECLARE + v int; + returning int; +BEGIN + FOREACH v IN ARRAY nums LOOP + SELECT count(*) + INTO returning + FROM unnest( nums ) n + WHERE n > v; + + RETURN NEXT returning; + END LOOP; + + RETURN; +END +$CODE$ +LANGUAGE plpgsql; diff --git a/challenge-244/luca-ferrari/postgresql/ch-2.plperl b/challenge-244/luca-ferrari/postgresql/ch-2.plperl new file mode 100644 index 0000000000..8680061e02 --- /dev/null +++ b/challenge-244/luca-ferrari/postgresql/ch-2.plperl @@ -0,0 +1,31 @@ +-- +-- Perl Weekly Challenge 244 +-- Task 2 +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-244/> +-- + +CREATE SCHEMA IF NOT EXISTS pwc244; + +CREATE OR REPLACE FUNCTION +pwc244.task2_plperl( int[] ) +RETURNS int +AS $CODE$ + use Algorithm::Combinatorics qw/ combinations /; + use List::Util qw/ min max /; + + my ( $nums ) = @_; + my $power; + + $power = 0; + + for my $k ( 1 .. $nums->@* ) { + my $combinations = combinations( \ $nums->@*, $k ); + while ( my $iter = $combinations->next ) { + $power += min( $iter->@* ) * ( max( $iter->@* ) ** 2 ); + } + } + + + return $power; +$CODE$ +LANGUAGE plperlu; diff --git a/challenge-244/luca-ferrari/postgresql/ch-2.sql b/challenge-244/luca-ferrari/postgresql/ch-2.sql new file mode 100644 index 0000000000..965f02d2f8 --- /dev/null +++ b/challenge-244/luca-ferrari/postgresql/ch-2.sql @@ -0,0 +1,16 @@ +-- +-- Perl Weekly Challenge 244 +-- Task 2 +-- +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-244/> +-- + +CREATE SCHEMA IF NOT EXISTS pwc244; + +CREATE OR REPLACE FUNCTION +pwc244.task2_plpgsql( nums int[] ) +RETURNS int +AS $CODE$ + SELECT pwc244.task2_plperl( nums ); +$CODE$ +LANGUAGE sql; diff --git a/challenge-244/luca-ferrari/python/ch-1.py b/challenge-244/luca-ferrari/python/ch-1.py new file mode 100644 index 0000000000..81cf48bfd3 --- /dev/null +++ b/challenge-244/luca-ferrari/python/ch-1.py @@ -0,0 +1,27 @@ +#!python + +# +# Perl Weekly Challenge 244 +# Task 1 +# +# See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-244/> +# + +import sys + +# task implementation +def main( argv ): + nums = list( map( int, argv ) ) + result = [] + + for current in nums: + result.append( len( list( filter( lambda x: x > current, nums ) ) ) ) + + print( ", ".join( map( str, result ) ) ) + + +# invoke the main without the command itself +if __name__ == '__main__': + main( sys.argv[ 1: ] ) + + diff --git a/challenge-244/luca-ferrari/python/ch-2.py b/challenge-244/luca-ferrari/python/ch-2.py new file mode 100644 index 0000000000..ade5ee27c2 --- /dev/null +++ b/challenge-244/luca-ferrari/python/ch-2.py @@ -0,0 +1,30 @@ +#!python + +# +# Perl Weekly Challenge 244 +# Task 2 +# +# See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-244/> +# + +import sys +from itertools import combinations; + +# task implementation +def main( argv ): + nums = list( map( int, argv ) ) + power = 0 + + for size in range( 1, len( nums ) + 1 ): + for current in combinations( nums, size ): + power = power + ( max( current ) ** 2 ) * min( current ) + + print( power ) + + + +# invoke the main without the command itself +if __name__ == '__main__': + main( sys.argv[ 1: ] ) + + diff --git a/challenge-244/luca-ferrari/raku/ch-1.p6 b/challenge-244/luca-ferrari/raku/ch-1.p6 new file mode 100644 index 0000000000..81a483982b --- /dev/null +++ b/challenge-244/luca-ferrari/raku/ch-1.p6 @@ -0,0 +1,14 @@ +#!raku + +# +# Perl Weekly Challenge 244 +# Task 1 +# +# See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-244/> +# + +sub MAIN( *@nums where { @nums.elems == @nums.grep( * ~~ Int ).elems } ) { + my @result; + @result[ $_ ] = @nums.grep( * > @nums[ $_ ] ).elems for 0 ..^ @nums.elems; + @result.say; +} diff --git a/challenge-244/luca-ferrari/raku/ch-2.p6 b/challenge-244/luca-ferrari/raku/ch-2.p6 new file mode 100644 index 0000000000..d73f33617f --- /dev/null +++ b/challenge-244/luca-ferrari/raku/ch-2.p6 @@ -0,0 +1,19 @@ +#!raku + +# +# Perl Weekly Challenge 244 +# Task 2 +# +# See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-244/> +# + +sub MAIN( *@nums where { @nums.elems == @nums.grep( * ~~ Int ).elems } ) { + + my $power = 0; + for @nums.combinations { + next if ! $_; + $power += $_.min * ( $_.max ** 2 ); + } + + $power.say; +} |
