From 4c5b6d7514053e1058d598fe731104195ee27ed4 Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Wed, 19 Jan 2022 11:28:38 +0100 Subject: Task 1 done --- challenge-148/luca-ferrari/raku/ch-1.p6 | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100755 challenge-148/luca-ferrari/raku/ch-1.p6 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; + +} -- cgit From e692ab43e6f7418fae59010664f949b3660d44eb Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Wed, 19 Jan 2022 13:26:38 +0100 Subject: Task 2 done --- challenge-148/luca-ferrari/raku/ch-2.p6 | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100755 challenge-148/luca-ferrari/raku/ch-2.p6 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..2d16a062ac --- /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 .. 5 ].join( "\n" ).say; +} -- cgit From ec44c087ea402b26c3c1ed40e5525c4f1dfb93bb Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Wed, 19 Jan 2022 14:17:13 +0100 Subject: Fix printing of the numbers using the specified limit --- challenge-148/luca-ferrari/raku/ch-2.p6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-148/luca-ferrari/raku/ch-2.p6 b/challenge-148/luca-ferrari/raku/ch-2.p6 index 2d16a062ac..453adc5583 100755 --- a/challenge-148/luca-ferrari/raku/ch-2.p6 +++ b/challenge-148/luca-ferrari/raku/ch-2.p6 @@ -24,5 +24,5 @@ sub MAIN( Int $limit = 5 ) { } }; - @triplets[ 0 .. 5 ].join( "\n" ).say; + @triplets[ 0 .. $limit ].join( "\n" ).say; } -- cgit From dfcd45fef8549247d3103f2acffb7fe2c60f1ab1 Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Wed, 19 Jan 2022 14:18:10 +0100 Subject: Task 2 done in PostgreSQL --- challenge-148/luca-ferrari/postgresql/ch-2.sql | 31 ++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 challenge-148/luca-ferrari/postgresql/ch-2.sql 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 +; -- cgit From 5ca04ec327a55eff61189660d729eecb9daa4953 Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Wed, 19 Jan 2022 14:22:05 +0100 Subject: Task 1 done in PostgreSQL --- challenge-148/luca-ferrari/postgresql/ch-1.sql | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 challenge-148/luca-ferrari/postgresql/ch-1.sql 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 ); -- cgit From a38b1afc9d128849c177bdbfc6f32f0349e8d46b Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Wed, 19 Jan 2022 15:24:22 +0100 Subject: Blog references --- challenge-148/luca-ferrari/blog-1.txt | 1 + challenge-148/luca-ferrari/blog-2.txt | 1 + challenge-148/luca-ferrari/blog-3.txt | 1 + challenge-148/luca-ferrari/blog-4.txt | 1 + 4 files changed, 4 insertions(+) create mode 100644 challenge-148/luca-ferrari/blog-1.txt create mode 100644 challenge-148/luca-ferrari/blog-2.txt create mode 100644 challenge-148/luca-ferrari/blog-3.txt create mode 100644 challenge-148/luca-ferrari/blog-4.txt 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 -- cgit