diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2022-01-10 14:06:41 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2022-01-10 14:06:41 +0100 |
| commit | afb6b053323475a1fe26d22c847611fac730a8b3 (patch) | |
| tree | f5d78c624b3d5f4a817c97277e1d54a4d09cf1e3 | |
| parent | a5295c7d01239392baa29a49a085d00fe165b7bd (diff) | |
| download | perlweeklychallenge-club-afb6b053323475a1fe26d22c847611fac730a8b3.tar.gz perlweeklychallenge-club-afb6b053323475a1fe26d22c847611fac730a8b3.tar.bz2 perlweeklychallenge-club-afb6b053323475a1fe26d22c847611fac730a8b3.zip | |
Task 2 done
| -rwxr-xr-x | challenge-147/luca-ferrari/raku/ch-2.p6 | 31 |
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; + } + } + + } |
