diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-03-18 10:37:25 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-18 10:37:25 +0000 |
| commit | c4723b6b92df8a0986d9da16d265f44a7f42b90c (patch) | |
| tree | 42deeeedd0e4479f96028378c47c339556929866 | |
| parent | 2b8a6edcd7919f358e43e27a5b878860b66e1ea7 (diff) | |
| parent | 6c15d7006aaf95f65d1701f287403b7d03fc6e40 (diff) | |
| download | perlweeklychallenge-club-c4723b6b92df8a0986d9da16d265f44a7f42b90c.tar.gz perlweeklychallenge-club-c4723b6b92df8a0986d9da16d265f44a7f42b90c.tar.bz2 perlweeklychallenge-club-c4723b6b92df8a0986d9da16d265f44a7f42b90c.zip | |
Merge pull request #5790 from fluca1978/pwc156
Pwc156
| -rw-r--r-- | challenge-156/luca-ferrari/blog-1.txt | 1 | ||||
| -rw-r--r-- | challenge-156/luca-ferrari/blog-2.txt | 1 | ||||
| -rw-r--r-- | challenge-156/luca-ferrari/blog-3.txt | 1 | ||||
| -rw-r--r-- | challenge-156/luca-ferrari/blog-4.txt | 1 | ||||
| -rw-r--r-- | challenge-156/luca-ferrari/postgresql/ch-1.sql | 35 | ||||
| -rw-r--r-- | challenge-156/luca-ferrari/postgresql/ch-2.sql | 48 | ||||
| -rw-r--r-- | challenge-156/luca-ferrari/raku/ch-1.p6 | 11 | ||||
| -rw-r--r-- | challenge-156/luca-ferrari/raku/ch-2.p6 | 8 |
8 files changed, 106 insertions, 0 deletions
diff --git a/challenge-156/luca-ferrari/blog-1.txt b/challenge-156/luca-ferrari/blog-1.txt new file mode 100644 index 0000000000..768974fdff --- /dev/null +++ b/challenge-156/luca-ferrari/blog-1.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2022/03/17/PerlWeeklyChallenge156.html#task1 diff --git a/challenge-156/luca-ferrari/blog-2.txt b/challenge-156/luca-ferrari/blog-2.txt new file mode 100644 index 0000000000..ec53607e53 --- /dev/null +++ b/challenge-156/luca-ferrari/blog-2.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2022/03/17/PerlWeeklyChallenge156.html#task2 diff --git a/challenge-156/luca-ferrari/blog-3.txt b/challenge-156/luca-ferrari/blog-3.txt new file mode 100644 index 0000000000..660a9db396 --- /dev/null +++ b/challenge-156/luca-ferrari/blog-3.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2022/03/18/PerlWeeklyChallenge156.html#task1plperl diff --git a/challenge-156/luca-ferrari/blog-4.txt b/challenge-156/luca-ferrari/blog-4.txt new file mode 100644 index 0000000000..2357b1a51b --- /dev/null +++ b/challenge-156/luca-ferrari/blog-4.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2022/03/18/PerlWeeklyChallenge156.html#task2plperl diff --git a/challenge-156/luca-ferrari/postgresql/ch-1.sql b/challenge-156/luca-ferrari/postgresql/ch-1.sql new file mode 100644 index 0000000000..70a4513be3 --- /dev/null +++ b/challenge-156/luca-ferrari/postgresql/ch-1.sql @@ -0,0 +1,35 @@ +CREATE SCHEMA IF NOT EXISTS pwc156; + +CREATE OR REPLACE FUNCTION +pwc156.is_prime( int ) +RETURNS bool +AS $CODE$ + return 0 if $_[0] <= 1; + for my $i ( 2 .. $_[0] - 1 ) { + return 0 if $_[0] % $i == 0; + } + + return 1; +$CODE$ +LANGUAGE plperl; + + +CREATE OR REPLACE FUNCTION +pwc156.sumbits( int[] ) +RETURNS int +AS $CODE$ + my $sum = 0; + for my $bit ( @{$_[0]} ) { + $sum += $bit; + } + + return $sum; +$CODE$ +LANGUAGE plperl; + + + +SELECT n +FROM generate_series( 1, 1000 ) n +WHERE pwc156.is_prime( pwc156.sumbits( regexp_split_to_array( n::bit(10)::text, '' )::int[] ) ) +LIMIT 10; diff --git a/challenge-156/luca-ferrari/postgresql/ch-2.sql b/challenge-156/luca-ferrari/postgresql/ch-2.sql new file mode 100644 index 0000000000..ac9d22739c --- /dev/null +++ b/challenge-156/luca-ferrari/postgresql/ch-2.sql @@ -0,0 +1,48 @@ +CREATE SCHEMA IF NOT EXISTS pwc156; + +CREATE OR REPLACE FUNCTION +pwc156.weird( int ) +RETURNS bool +AS $CODE$ + +use Algorithm::Knapsack; +my @divisors; + +for my $i ( 2 .. $_[0] - 1 ) { + push @divisors, $i if $_[0] % $i == 0; +} + +my $sum = 0; +for my $i ( @divisors ) { + $sum += $i; +} + + +return 0 if $sum <= $_[0]; + +my $knapsack = Algorithm::Knapsack->new( + capacity => $_[0], + weights => \@divisors, +); + +$knapsack->compute(); + +foreach my $solution ($knapsack->solutions()) { + my @founds = @divisors[ $solution->@* ]; + my $sum = 0; + $sum += $_ for ( @founds ); + return 0 if $sum == $_[0]; + +} + + +return 1; +$CODE$ +LANGUAGE plperlu; + + + + +SELECT n +FROM generate_series( 1, 100 ) n +WHERE pwc156.weird( n ); diff --git a/challenge-156/luca-ferrari/raku/ch-1.p6 b/challenge-156/luca-ferrari/raku/ch-1.p6 new file mode 100644 index 0000000000..3b3bcc727a --- /dev/null +++ b/challenge-156/luca-ferrari/raku/ch-1.p6 @@ -0,0 +1,11 @@ +#!raku + +sub MAIN( Int $limit where { $limit > 0 } = 10 ) { + my @pernicious = lazy gather { + for 1 .. Inf { + take $_ if $_.base( 2 ).comb.sum.is-prime; + } + }; + + @pernicious[ 0 .. $limit - 1 ].join( ', ' ).say; +} diff --git a/challenge-156/luca-ferrari/raku/ch-2.p6 b/challenge-156/luca-ferrari/raku/ch-2.p6 new file mode 100644 index 0000000000..9788f65fbe --- /dev/null +++ b/challenge-156/luca-ferrari/raku/ch-2.p6 @@ -0,0 +1,8 @@ +#!raku + +sub MAIN( Int $n where { $n > 0 } ) { + my @divisors = ( 1 .. $n - 1 ).grep( $n %% * ); + '0'.say and exit if @divisors.sum <= $n + || @divisors.combinations.map( *.sum ).grep( * == $n ).elems > 0; + '1'.say; +} |
