aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2022-01-19 14:18:10 +0100
committerLuca Ferrari <fluca1978@gmail.com>2022-01-19 14:18:10 +0100
commitdfcd45fef8549247d3103f2acffb7fe2c60f1ab1 (patch)
tree44a7a9fbc3ae7571e247d2cd56107ea203f717a3
parentec44c087ea402b26c3c1ed40e5525c4f1dfb93bb (diff)
downloadperlweeklychallenge-club-dfcd45fef8549247d3103f2acffb7fe2c60f1ab1.tar.gz
perlweeklychallenge-club-dfcd45fef8549247d3103f2acffb7fe2c60f1ab1.tar.bz2
perlweeklychallenge-club-dfcd45fef8549247d3103f2acffb7fe2c60f1ab1.zip
Task 2 done in PostgreSQL
-rw-r--r--challenge-148/luca-ferrari/postgresql/ch-2.sql31
1 files changed, 31 insertions, 0 deletions
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
+;