aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2022-01-19 13:26:38 +0100
committerLuca Ferrari <fluca1978@gmail.com>2022-01-19 13:26:38 +0100
commite692ab43e6f7418fae59010664f949b3660d44eb (patch)
treec649092a7590d7b48bbe781dd914a69a156693a9
parent4c5b6d7514053e1058d598fe731104195ee27ed4 (diff)
downloadperlweeklychallenge-club-e692ab43e6f7418fae59010664f949b3660d44eb.tar.gz
perlweeklychallenge-club-e692ab43e6f7418fae59010664f949b3660d44eb.tar.bz2
perlweeklychallenge-club-e692ab43e6f7418fae59010664f949b3660d44eb.zip
Task 2 done
-rwxr-xr-xchallenge-148/luca-ferrari/raku/ch-2.p628
1 files changed, 28 insertions, 0 deletions
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;
+}