diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2022-01-19 13:26:38 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2022-01-19 13:26:38 +0100 |
| commit | e692ab43e6f7418fae59010664f949b3660d44eb (patch) | |
| tree | c649092a7590d7b48bbe781dd914a69a156693a9 | |
| parent | 4c5b6d7514053e1058d598fe731104195ee27ed4 (diff) | |
| download | perlweeklychallenge-club-e692ab43e6f7418fae59010664f949b3660d44eb.tar.gz perlweeklychallenge-club-e692ab43e6f7418fae59010664f949b3660d44eb.tar.bz2 perlweeklychallenge-club-e692ab43e6f7418fae59010664f949b3660d44eb.zip | |
Task 2 done
| -rwxr-xr-x | challenge-148/luca-ferrari/raku/ch-2.p6 | 28 |
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; +} |
