aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2022-01-10 14:06:41 +0100
committerLuca Ferrari <fluca1978@gmail.com>2022-01-10 14:06:41 +0100
commitafb6b053323475a1fe26d22c847611fac730a8b3 (patch)
treef5d78c624b3d5f4a817c97277e1d54a4d09cf1e3
parenta5295c7d01239392baa29a49a085d00fe165b7bd (diff)
downloadperlweeklychallenge-club-afb6b053323475a1fe26d22c847611fac730a8b3.tar.gz
perlweeklychallenge-club-afb6b053323475a1fe26d22c847611fac730a8b3.tar.bz2
perlweeklychallenge-club-afb6b053323475a1fe26d22c847611fac730a8b3.zip
Task 2 done
-rwxr-xr-xchallenge-147/luca-ferrari/raku/ch-2.p631
1 files changed, 31 insertions, 0 deletions
diff --git a/challenge-147/luca-ferrari/raku/ch-2.p6 b/challenge-147/luca-ferrari/raku/ch-2.p6
new file mode 100755
index 0000000000..daab2b97c4
--- /dev/null
+++ b/challenge-147/luca-ferrari/raku/ch-2.p6
@@ -0,0 +1,31 @@
+#!raku
+
+ sub MAIN( Int $limit = 3000 ) {
+
+ my ( %pentagons, %inverse-pentagons );
+ %pentagons{ $_ } = ( $_ * ( 3 * $_ - 1 ) / 2 ) for 1 .. $limit;
+ %inverse-pentagons{ %pentagons{ $_ } } = $_ for %pentagons.keys.sort;
+
+
+
+ for %pentagons.keys.sort -> $index-left {
+ for %pentagons.keys.sort -> $index-right {
+ next if $index-left == $index-right;
+
+
+ my ( $sum, $diff ) = %pentagons{ $index-left } + %pentagons{ $index-right },
+ abs( %pentagons{ $index-left } - %pentagons{ $index-right } );
+
+ # this is too slow, therefore I use an inverse hash!
+ # next if ! %pentagons.values.grep( * ~~ $sum );
+ # next if ! %pentagons.values.grep( * ~~ $diff );
+ next if %inverse-pentagons{ $diff }:!exists;
+ next if %inverse-pentagons{ $sum }:!exists;
+
+ "P( $index-left ) + P( $index-right ) = { %pentagons{ $index-left } } + { %pentagons{ $index-right } } = $sum = P( { %inverse-pentagons{ $sum } } )".say;
+ "P( $index-left ) - P( $index-right ) = { %pentagons{ $index-left } } + { %pentagons{ $index-right } } = $diff = P( {%inverse-pentagons{ $diff } } )".say;
+ exit;
+ }
+ }
+
+ }