diff options
| -rw-r--r-- | challenge-125/simon-proctor/raku/ch-1.raku | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/challenge-125/simon-proctor/raku/ch-1.raku b/challenge-125/simon-proctor/raku/ch-1.raku index 1d911c8085..0dde3bf6eb 100644 --- a/challenge-125/simon-proctor/raku/ch-1.raku +++ b/challenge-125/simon-proctor/raku/ch-1.raku @@ -22,26 +22,9 @@ multi sub MAIN(UInt $N where * > 0) { } sub py-triples(UInt $N) { - my @out; - - #my @odds = (1,*+2...* >= $N).cache; - - #return (@odds X, @odds).hyper.grep( -> ($m, $n) { $m > $n } ).map( -> ( $m, $n ) { note ($m,$n); ( ($m * $n), ( ($m²-$n²)/2), ( ($m² + $n²)/2 ) ) } ).grep( -> $pos { note $pos; $N ~~ $pos.any; } ); - - my $as = start ((1..^$N) X, (1..^$N)).hyper - .grep( -> ($a,$b) { $b >= $a } ) - .grep( -> ($a,$b) { $N² == $a² + $b² } ) - .map( -> ($a, $b) { ( $a, $b, $N ).sort } ); - - my $cs = start ((1..($N² div 2)) X, (1..($N² div 2)+1)).hyper - .grep( -> ($a,$c) { $c >= $a } ) - .grep( -> ($a,$c) { $N² + $a² == $c² } ) - .map( -> ($a, $c) { ( $a, $N, $c ).sort } ); - - await $as, $cs; - - return |$as.result , |$cs.result; - - + return ((1..($N² div 2)) X, (1..($N² div 2)+1)).hyper + .grep( -> ($a,$b) { $b >= $a } ) + .grep( -> ($a,$b) { $N² + $a² == $b² || $N² == $a² + $b² } ) + .map( -> ($a,$b) { ( $a, $b, $N ).sort } ); } |
