aboutsummaryrefslogtreecommitdiff
path: root/challenge-252
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-01-16 19:46:31 +0000
committerGitHub <noreply@github.com>2024-01-16 19:46:31 +0000
commitf29b6691f71e0dd071eb0668a2e5e2f0cb8077de (patch)
treec0890836544be7360a1dcfe463c611746633eadc /challenge-252
parentf5349696fd043be2b23e915bf0d869f4966a819b (diff)
parent65a2d0d671dfe4c0ce3e2664b6ac7abce8f0856c (diff)
downloadperlweeklychallenge-club-f29b6691f71e0dd071eb0668a2e5e2f0cb8077de.tar.gz
perlweeklychallenge-club-f29b6691f71e0dd071eb0668a2e5e2f0cb8077de.tar.bz2
perlweeklychallenge-club-f29b6691f71e0dd071eb0668a2e5e2f0cb8077de.zip
Merge pull request #9414 from fluca1978/PWC252
PWC 252
Diffstat (limited to 'challenge-252')
-rw-r--r--challenge-252/luca-ferrari/blog-1.txt1
-rw-r--r--challenge-252/luca-ferrari/blog-2.txt1
-rw-r--r--challenge-252/luca-ferrari/blog-3.txt1
-rw-r--r--challenge-252/luca-ferrari/blog-4.txt1
-rw-r--r--challenge-252/luca-ferrari/blog-5.txt1
-rw-r--r--challenge-252/luca-ferrari/blog-6.txt1
-rw-r--r--challenge-252/luca-ferrari/blog-7.txt1
-rw-r--r--challenge-252/luca-ferrari/blog-8.txt1
-rw-r--r--challenge-252/luca-ferrari/blog_10.txt1
-rw-r--r--challenge-252/luca-ferrari/blog_9.txt1
-rw-r--r--challenge-252/luca-ferrari/java/ch_1.java13
-rw-r--r--challenge-252/luca-ferrari/java/ch_2.java40
-rw-r--r--challenge-252/luca-ferrari/postgresql/ch-1.plperl24
-rw-r--r--challenge-252/luca-ferrari/postgresql/ch-1.sql29
-rw-r--r--challenge-252/luca-ferrari/postgresql/ch-2.plperl37
-rw-r--r--challenge-252/luca-ferrari/postgresql/ch-2.sql41
-rw-r--r--challenge-252/luca-ferrari/python/ch-1.py27
-rw-r--r--challenge-252/luca-ferrari/python/ch-2.py39
-rw-r--r--challenge-252/luca-ferrari/raku/ch-1.p612
-rw-r--r--challenge-252/luca-ferrari/raku/ch-2.p623
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;
+}