aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-01-20 09:00:55 +0000
committerGitHub <noreply@github.com>2022-01-20 09:00:55 +0000
commita09f0d53053cc4cf2ccd96a0a0fccf12fb1addea (patch)
treebd01836ebe95148b48234ea47916cb198fe24406
parent7cf8f31252ae9c14e175eed8c61dccabc132add9 (diff)
parenta38b1afc9d128849c177bdbfc6f32f0349e8d46b (diff)
downloadperlweeklychallenge-club-a09f0d53053cc4cf2ccd96a0a0fccf12fb1addea.tar.gz
perlweeklychallenge-club-a09f0d53053cc4cf2ccd96a0a0fccf12fb1addea.tar.bz2
perlweeklychallenge-club-a09f0d53053cc4cf2ccd96a0a0fccf12fb1addea.zip
Merge pull request #5544 from fluca1978/PWC148
Pwc148
-rw-r--r--challenge-148/luca-ferrari/blog-1.txt1
-rw-r--r--challenge-148/luca-ferrari/blog-2.txt1
-rw-r--r--challenge-148/luca-ferrari/blog-3.txt1
-rw-r--r--challenge-148/luca-ferrari/blog-4.txt1
-rw-r--r--challenge-148/luca-ferrari/postgresql/ch-1.sql18
-rw-r--r--challenge-148/luca-ferrari/postgresql/ch-2.sql31
-rwxr-xr-xchallenge-148/luca-ferrari/raku/ch-1.p617
-rwxr-xr-xchallenge-148/luca-ferrari/raku/ch-2.p628
8 files changed, 98 insertions, 0 deletions
diff --git a/challenge-148/luca-ferrari/blog-1.txt b/challenge-148/luca-ferrari/blog-1.txt
new file mode 100644
index 0000000000..15a54284d3
--- /dev/null
+++ b/challenge-148/luca-ferrari/blog-1.txt
@@ -0,0 +1 @@
+https://fluca1978.github.io/2022/01/19/PerlWeeklyChallenge148.html#task1
diff --git a/challenge-148/luca-ferrari/blog-2.txt b/challenge-148/luca-ferrari/blog-2.txt
new file mode 100644
index 0000000000..0b026a41b4
--- /dev/null
+++ b/challenge-148/luca-ferrari/blog-2.txt
@@ -0,0 +1 @@
+https://fluca1978.github.io/2022/01/19/PerlWeeklyChallenge148.html#task2
diff --git a/challenge-148/luca-ferrari/blog-3.txt b/challenge-148/luca-ferrari/blog-3.txt
new file mode 100644
index 0000000000..4f5dffef8a
--- /dev/null
+++ b/challenge-148/luca-ferrari/blog-3.txt
@@ -0,0 +1 @@
+https://fluca1978.github.io/2022/01/19/PerlWeeklyChallenge148.html#task1pg
diff --git a/challenge-148/luca-ferrari/blog-4.txt b/challenge-148/luca-ferrari/blog-4.txt
new file mode 100644
index 0000000000..eda8245158
--- /dev/null
+++ b/challenge-148/luca-ferrari/blog-4.txt
@@ -0,0 +1 @@
+https://fluca1978.github.io/2022/01/19/PerlWeeklyChallenge148.html#task2pg
diff --git a/challenge-148/luca-ferrari/postgresql/ch-1.sql b/challenge-148/luca-ferrari/postgresql/ch-1.sql
new file mode 100644
index 0000000000..a1782662de
--- /dev/null
+++ b/challenge-148/luca-ferrari/postgresql/ch-1.sql
@@ -0,0 +1,18 @@
+ SELECT v
+ FROM generate_series( 1, 10 ) v
+ WHERE
+ v IN ( 2, 4, 6 )
+
+ UNION
+
+ SELECT v
+ FROM generate_series( 11, 19 ) v
+ WHERE v IN ( 12 )
+
+ UNION
+
+ SELECT v
+ FROM generate_series( 20, 100 ) v
+ WHERE
+ v % 10 IN ( 2, 4, 6 )
+ AND ( v / 10 )::int IN ( 3, 4, 5, 6 );
diff --git a/challenge-148/luca-ferrari/postgresql/ch-2.sql b/challenge-148/luca-ferrari/postgresql/ch-2.sql
new file mode 100644
index 0000000000..5d178955a1
--- /dev/null
+++ b/challenge-148/luca-ferrari/postgresql/ch-2.sql
@@ -0,0 +1,31 @@
+WITH RECURSIVE
+triplets AS
+(
+ SELECT a::numeric, b::numeric, c::numeric
+ FROM generate_series( 1, 30 ) a
+ , generate_series( 1, 30 ) b
+ , generate_series( 1, 30 ) c
+ ORDER BY a, b, c
+)
+, cardano_sum AS
+(
+ SELECT a, b, c,
+ ( a + b * sqrt( c ) ) AS l
+ ,( a - b * sqrt( c ) ) AS r
+ FROM triplets
+)
+, cardano AS
+(
+ SELECT a, b, c, l, r
+ , CASE WHEN l < 0 THEN -1 ELSE 1 END * pow( abs( l )::numeric, 1/3::numeric )
+ + CASE WHEN r < 0 THEN -1 ELSE 1 END * pow( abs( r )::numeric, 1/3::numeric )
+ AS triplet_sum
+ FROM cardano_sum
+)
+
+SELECT *
+FROM cardano
+WHERE
+abs( 1 - triplet_sum::numeric ) <= 0.0000000001
+LIMIT 5
+;
diff --git a/challenge-148/luca-ferrari/raku/ch-1.p6 b/challenge-148/luca-ferrari/raku/ch-1.p6
new file mode 100755
index 0000000000..615f92f91f
--- /dev/null
+++ b/challenge-148/luca-ferrari/raku/ch-1.p6
@@ -0,0 +1,17 @@
+#!raku
+
+
+
+
+
+sub MAIN() {
+
+ my @eban-units = 2, 4, 6;
+ my @eban-teens = 12;
+ my @eban-tens = 3, 4, 5, 6;
+
+ $_.say if @eban-units.grep( $_ ) for 1 .. 10;
+ $_.say if @eban-teens.grep( $_ ) for 11 .. 19;
+ $_.say if @eban-tens.grep( ( $_ / 10 ).Int ) && @eban-units.grep( $_ % 10 ) for 20 .. 100;
+
+}
diff --git a/challenge-148/luca-ferrari/raku/ch-2.p6 b/challenge-148/luca-ferrari/raku/ch-2.p6
new file mode 100755
index 0000000000..453adc5583
--- /dev/null
+++ b/challenge-148/luca-ferrari/raku/ch-2.p6
@@ -0,0 +1,28 @@
+#!raku
+
+multi sub is-cardano-triplet( $a, $b, $c ) {
+
+ my $left = .sign * .abs**( 1 / 3 ) given ( $a + $b * $c.sqrt );
+ my $right = .sign * .abs**( 1 / 3 ) given ( $a - $b * $c.sqrt );
+ return 1 =~= ( $left + $right );
+}
+
+
+multi sub is-cardano-triplet( @triplet ) {
+ return is-cardano-triplet( @triplet[ 0 ], @triplet[ 1 ], @triplet[ 2 ] );
+}
+
+sub MAIN( Int $limit = 5 ) {
+ my @triplets = lazy gather {
+ for 1 .. Inf -> $a {
+ for 1 ..^ $a -> $b {
+ for 1 ..^ $b -> $c {
+ $_.take if is-cardano-triplet( $_ ) for ( $a, $b, $c ).permutations;
+
+ }
+ }
+ }
+ };
+
+ @triplets[ 0 .. $limit ].join( "\n" ).say;
+}