diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2024-01-15 09:12:38 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2024-01-15 12:34:18 +0100 |
| commit | 65a2d0d671dfe4c0ce3e2664b6ac7abce8f0856c (patch) | |
| tree | 2b33fc29d14d8bc21b85fd0c2f77bb6589e094b3 /challenge-252 | |
| parent | 7efb373bb9adffa79f84825217015835805298b5 (diff) | |
| download | perlweeklychallenge-club-65a2d0d671dfe4c0ce3e2664b6ac7abce8f0856c.tar.gz perlweeklychallenge-club-65a2d0d671dfe4c0ce3e2664b6ac7abce8f0856c.tar.bz2 perlweeklychallenge-club-65a2d0d671dfe4c0ce3e2664b6ac7abce8f0856c.zip | |
PWC 252
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
Task 1 Java done
Task 2 Java done
Diffstat (limited to 'challenge-252')
20 files changed, 295 insertions, 0 deletions
diff --git a/challenge-252/luca-ferrari/blog-1.txt b/challenge-252/luca-ferrari/blog-1.txt new file mode 100644 index 0000000000..f410e3161f --- /dev/null +++ b/challenge-252/luca-ferrari/blog-1.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2024/01/15/PerlWeeklyChallenge252.html#task1 diff --git a/challenge-252/luca-ferrari/blog-2.txt b/challenge-252/luca-ferrari/blog-2.txt new file mode 100644 index 0000000000..175a30bc9d --- /dev/null +++ b/challenge-252/luca-ferrari/blog-2.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2024/01/15/PerlWeeklyChallenge252.html#task2 diff --git a/challenge-252/luca-ferrari/blog-3.txt b/challenge-252/luca-ferrari/blog-3.txt new file mode 100644 index 0000000000..153b11f11a --- /dev/null +++ b/challenge-252/luca-ferrari/blog-3.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2024/01/15/PerlWeeklyChallenge252.html#task1plperl diff --git a/challenge-252/luca-ferrari/blog-4.txt b/challenge-252/luca-ferrari/blog-4.txt new file mode 100644 index 0000000000..df5d6c25dc --- /dev/null +++ b/challenge-252/luca-ferrari/blog-4.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2024/01/15/PerlWeeklyChallenge252.html#task2plperl diff --git a/challenge-252/luca-ferrari/blog-5.txt b/challenge-252/luca-ferrari/blog-5.txt new file mode 100644 index 0000000000..8db6bdda83 --- /dev/null +++ b/challenge-252/luca-ferrari/blog-5.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2024/01/15/PerlWeeklyChallenge252.html#task1plpgsql diff --git a/challenge-252/luca-ferrari/blog-6.txt b/challenge-252/luca-ferrari/blog-6.txt new file mode 100644 index 0000000000..122385a3fa --- /dev/null +++ b/challenge-252/luca-ferrari/blog-6.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2024/01/15/PerlWeeklyChallenge252.html#task2plpgsql diff --git a/challenge-252/luca-ferrari/blog-7.txt b/challenge-252/luca-ferrari/blog-7.txt new file mode 100644 index 0000000000..b9eb4b6eb6 --- /dev/null +++ b/challenge-252/luca-ferrari/blog-7.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2024/01/15/PerlWeeklyChallenge252.html#task1python diff --git a/challenge-252/luca-ferrari/blog-8.txt b/challenge-252/luca-ferrari/blog-8.txt new file mode 100644 index 0000000000..a94acff5f2 --- /dev/null +++ b/challenge-252/luca-ferrari/blog-8.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2024/01/15/PerlWeeklyChallenge252.html#task2python diff --git a/challenge-252/luca-ferrari/blog_10.txt b/challenge-252/luca-ferrari/blog_10.txt new file mode 100644 index 0000000000..addc13bcda --- /dev/null +++ b/challenge-252/luca-ferrari/blog_10.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2024/01/15/PerlWeeklyChallenge252.html#task1java diff --git a/challenge-252/luca-ferrari/blog_9.txt b/challenge-252/luca-ferrari/blog_9.txt new file mode 100644 index 0000000000..6d2f931e4d --- /dev/null +++ b/challenge-252/luca-ferrari/blog_9.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2024/01/15/PerlWeeklyChallenge252.html#task2java diff --git a/challenge-252/luca-ferrari/java/ch_1.java b/challenge-252/luca-ferrari/java/ch_1.java new file mode 100644 index 0000000000..c903dfbb88 --- /dev/null +++ b/challenge-252/luca-ferrari/java/ch_1.java @@ -0,0 +1,13 @@ +public class ch_1 { + public static void main( String argv[] ) { + int sum = 0; + for ( int i = 0; i < argv.length; i++ ) { + if ( argv.length % ( i + 1 ) != 0 ) + continue; + + sum += Math.pow( Integer.parseInt( argv[ i ] ), 2 ); + } + + System.out.println( sum ); + } +} diff --git a/challenge-252/luca-ferrari/java/ch_2.java b/challenge-252/luca-ferrari/java/ch_2.java new file mode 100644 index 0000000000..5a4b46083a --- /dev/null +++ b/challenge-252/luca-ferrari/java/ch_2.java @@ -0,0 +1,40 @@ +import java.util.*; + +public class ch_2 { + public static void main( String argv[] ) throws Exception { + int size = Integer.parseInt( argv[ 0 ] ); + + if ( size <= 3 ) + throw new Exception( "Cannot work with a size less than 3!" ); + + List<Integer> nums = new LinkedList<Integer>(); + + + if ( size % 2 == 0 ) { + for ( int i = 1; i < size / 2 ; i++ ) { + nums.add( i ); + nums.add( i * -1 ); + } + } + else { + for ( int i = 1; i < ( size - 1 ) / 2 ; i++ ) { + nums.add( i ); + nums.add( i * -1 ); + } + + int next = ( size - 1 ) / 2 + 1; + nums.add( next ); + nums.add( next + 1 ); + nums.add( ( next * 2 + 1 ) * -1 ); + } + + + boolean printedOne = false; + for ( int i : nums ) { + System.out.print( i + ( printedOne ? ", " : "" ) ); + printedOne = true; + } + + System.out.println(); + } +} diff --git a/challenge-252/luca-ferrari/postgresql/ch-1.plperl b/challenge-252/luca-ferrari/postgresql/ch-1.plperl new file mode 100644 index 0000000000..5d8298c3e7 --- /dev/null +++ b/challenge-252/luca-ferrari/postgresql/ch-1.plperl @@ -0,0 +1,24 @@ +-- +-- Perl Weekly Challenge 252 +-- Task 1 +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-252/> +-- + +CREATE SCHEMA IF NOT EXISTS pwc252; + +CREATE OR REPLACE FUNCTION +pwc252.task1_plperl( int[] ) +RETURNS int +AS $CODE$ + my ( $nums ) = @_; + + my ( $sum ) = 0; + + for ( 0 .. $nums->@* - 1 ) { + next if $nums->@* % ( $_ + 1 ) != 0; + $sum += $nums->@[ $_ ] ** 2; + } + + return( $sum ); +$CODE$ +LANGUAGE plperl; diff --git a/challenge-252/luca-ferrari/postgresql/ch-1.sql b/challenge-252/luca-ferrari/postgresql/ch-1.sql new file mode 100644 index 0000000000..2e629884e7 --- /dev/null +++ b/challenge-252/luca-ferrari/postgresql/ch-1.sql @@ -0,0 +1,29 @@ +-- +-- Perl Weekly Challenge 252 +-- Task 1 +-- +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-252/> +-- + +CREATE SCHEMA IF NOT EXISTS pwc252; + +CREATE OR REPLACE FUNCTION +pwc252.task1_plpgsql( nums int[] ) +RETURNS int +AS $CODE$ +DECLARE + sumx int := 0; +BEGIN + + FOR i IN 1 .. array_length( nums, 1 ) LOOP + IF mod( array_length( nums, 1 ), i ) <> 0 THEN + CONTINUE; + END IF; + + sumx := sumx + pow( nums[ i ], 2 ); + END LOOP; + + RETURN sumx; +END +$CODE$ +LANGUAGE plpgsql; diff --git a/challenge-252/luca-ferrari/postgresql/ch-2.plperl b/challenge-252/luca-ferrari/postgresql/ch-2.plperl new file mode 100644 index 0000000000..a7abf56217 --- /dev/null +++ b/challenge-252/luca-ferrari/postgresql/ch-2.plperl @@ -0,0 +1,37 @@ +-- +-- Perl Weekly Challenge 252 +-- Task 2 +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-252/> +-- + +CREATE SCHEMA IF NOT EXISTS pwc252; + +CREATE OR REPLACE FUNCTION +pwc252.task2_plperl( int ) +RETURNS SETOF int +AS $CODE$ + my ( $size ) = @_; + + die "Cannot have a size less than 3!" if ( $size <= 3 ); + + if ( $size % 2 == 0 ) { + for ( 1 .. $size / 2 ) { + return_next( $_ ); + return_next( $_ * -1 ); + } + } + else { + for ( 1 .. ( $size - 1 ) / 2 ) { + return_next( $_ ); + return_next( $_ * -1 ); + } + + my $next = int( $size / 2 ) + 1; + return_next( $next ); + return_next( $next + 1 ); + return_next( ( $next + $next + 1 ) * -1 ); + } + +return undef; +$CODE$ +LANGUAGE plperl; diff --git a/challenge-252/luca-ferrari/postgresql/ch-2.sql b/challenge-252/luca-ferrari/postgresql/ch-2.sql new file mode 100644 index 0000000000..b97601e8fa --- /dev/null +++ b/challenge-252/luca-ferrari/postgresql/ch-2.sql @@ -0,0 +1,41 @@ +-- +-- Perl Weekly Challenge 252 +-- Task 2 +-- +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-252/> +-- + +CREATE SCHEMA IF NOT EXISTS pwc252; + +CREATE OR REPLACE FUNCTION +pwc252.task2_plpgsql( size int ) +RETURNS SETOF int +AS $CODE$ +DECLARE + next_value int; +BEGIN + + IF size <= 3 THEN + RAISE 'Cannot work with a size less than 3!'; + END IF; + + IF mod( size, 2 ) = 0 THEN + FOR i IN 1 .. ( size / 2 ) LOOP + RETURN NEXT i; + RETURN NEXT (i * -1); + END LOOP; + ELSE + FOR i IN 2 .. ( size - 1 ) / 2 LOOP + RETURN NEXT i; + RETURN NEXT (i * -1); + END LOOP; + + next_value := ( size - 1 ) / 2 + 1; + RETURN NEXT next_value; + RETURN NEXT next_value + 1; + RETURN NEXT ( next_value + next_value + 1 ) * -1; + END IF; +RETURN; +END +$CODE$ +LANGUAGE plpgsql; diff --git a/challenge-252/luca-ferrari/python/ch-1.py b/challenge-252/luca-ferrari/python/ch-1.py new file mode 100644 index 0000000000..cae2cc2c1c --- /dev/null +++ b/challenge-252/luca-ferrari/python/ch-1.py @@ -0,0 +1,27 @@ +#!python + +# +# Perl Weekly Challenge 252 +# Task 1 +# +# See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-252/> +# + +import sys + +# task implementation +# the return value will be printed +def main( argv ): + nums = list( map( int, argv ) ) + sum = 0 + for i in range( 0, len( nums ) ): + if len( nums ) % ( i + 1 ) == 0: + sum += nums[ i ] ** 2; + + return sum + + +# invoke the main without the command itself +if __name__ == '__main__': + print( main( sys.argv[ 1: ] ) ) + diff --git a/challenge-252/luca-ferrari/python/ch-2.py b/challenge-252/luca-ferrari/python/ch-2.py new file mode 100644 index 0000000000..4862800e92 --- /dev/null +++ b/challenge-252/luca-ferrari/python/ch-2.py @@ -0,0 +1,39 @@ +#!python + +# +# Perl Weekly Challenge 252 +# Task 2 +# +# See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-252/> +# + +import sys + +# task implementation +# the return value will be printed +def main( argv ): + size = int( argv[ 0 ] ) + nums = [] + + if size % 2 == 0: + for i in range( 1, size / 2 ): + nums.append( i ) + nums.append( i * -1 ) + else: + for i in range( 1, int( ( size - 1 ) / 2 ) ): + nums.append( i ) + nums.append( i * -1 ) + + next = max( nums ) + 1 + nums.append( next ) + nums.append( next + 1 ) + nums.append( ( next + next + 1 ) * -1 ) + + return nums + + + +# invoke the main without the command itself +if __name__ == '__main__': + print( main( sys.argv[ 1: ] ) ) + diff --git a/challenge-252/luca-ferrari/raku/ch-1.p6 b/challenge-252/luca-ferrari/raku/ch-1.p6 new file mode 100644 index 0000000000..3dbb8a96cc --- /dev/null +++ b/challenge-252/luca-ferrari/raku/ch-1.p6 @@ -0,0 +1,12 @@ +#!raku + +# +# Perl Weekly Challenge 252 +# Task 1 +# +# See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-252/> +# + +sub MAIN( *@nums where { @nums.elems == @nums.grep( * ~~ Int ).elems } ) { + @nums.kv.map( { @nums.elems %% ( $^index + 1 ) ?? $^value ** 2 !! 0 } ).sum.say; +} diff --git a/challenge-252/luca-ferrari/raku/ch-2.p6 b/challenge-252/luca-ferrari/raku/ch-2.p6 new file mode 100644 index 0000000000..952e96e397 --- /dev/null +++ b/challenge-252/luca-ferrari/raku/ch-2.p6 @@ -0,0 +1,23 @@ +#!raku + +# +# Perl Weekly Challenge 252 +# Task 2 +# +# See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-252/> +# + +sub MAIN( $n where { $n >= 3 && $n ~~ Int } ) { + my @nums; + + if $n %% 2 { + @nums.push: $_, $_ * -1 for 1 .. ( $n / 2 ); + } + else { + @nums.push: $_, $_ * -1 for 1 .. ( ( $n - 2 ) / 2 ); + my $next = @nums.max + 1; + @nums.push: $next, $next + 1, ( $next + $next + 1 ) * -1; + } + + @nums.join( ',' ).say; +} |
