diff options
| -rw-r--r-- | challenge-168/bruce-gray/raku/ch-1.raku | 26 | ||||
| -rw-r--r-- | challenge-168/bruce-gray/raku/ch-2.raku | 23 |
2 files changed, 49 insertions, 0 deletions
diff --git a/challenge-168/bruce-gray/raku/ch-1.raku b/challenge-168/bruce-gray/raku/ch-1.raku new file mode 100644 index 0000000000..58bd4c123c --- /dev/null +++ b/challenge-168/bruce-gray/raku/ch-1.raku @@ -0,0 +1,26 @@ +my @perrin = 3, 0, 2, { sink $^c; $^a + $^b } … *; # https://oeis.org/A001608 + +my @perrin_primes = @perrin.grep(&is-prime).unique; # https://oeis.org/A074788 + +use Test; +plan 2; +constant @expected_from_TWC_task = + 2, 3, 5, 7, 17, 29, 277, 367, 853, 14197, 43721, 1442968193, 792606555396977, +; + +# Bonus values from https://oeis.org/A074788/b074788.txt +constant @expected_bonus = + 187278659180417234321, + 66241160488780141071579864797, + 22584751787583336797527561822649328254745329, + 29918426252927024136988188355201180399482197, + 375650352810749628391658393147651164149079195002314045738061982119710039976648976965060598469931973177804611901813, + 17889871724792219792241402014701050416254403054909819082963323121939408639274412767017724313639101409409795922319558694157739957, + 18106564606349058350871445556416183706383627605153862231876341960946635847221883756661544295450957270512362655785866338801138896957806303459431839801, + 26443665126671039192963010650954408309392693422822076064578125303560832561672888722088906692033449248344378194605701099265071815485284432217750405098433434144179485693746031340517, + 1213927704065079865017068478668276043626477148780514011765015731886286159454983721480068033892046357328417429372450987777059793416910075913180181245051185193201551033755831307534780351082477949347441, + 10157009252817374963867100949951608928714862242745008993013668540854184107874570804968501397570379041274564782116665400515007185872727535557633044532545504298417513460010708859590624519737577132699128528530905048976280744785692707368299964909111445284217209819026508401682969213029773502708330316828337469827393737449858748826727773566201071908906567992775961863663250545199702810339801764180200620104056601639153965055826816646056412891949330608030933040756303987388596508709113305229398404925505186056022798817893091541647706591557044644581, + 3631640163992448158050321979101634523424467070532989940589376200895999542521324121865744873084026078365592113103829057044319371093458267314150632770247926037880226504980936257910602481948018841362454143562440537190514898173776176693598426395086189616722660098879586330664613823090197360409779437591689520837492830513163054777061491401259817572546197753109857199993236881971656255401039799820579630315398215866349742611432329007353997352494443986017317922833363523351835711663212252398827126207580953779469798265218514506497114067477064259789799733135324524166520280952689291443318735365943242441087374207019201381566622887361047383284786893087439845660097204995566088460835424395601898782600822606786314286293, +; +is-deeply @perrin_primes.head(13).sort, @expected_from_TWC_task.Seq; +is-deeply @perrin_primes.skip(13).head(11), @expected_bonus.Seq; diff --git a/challenge-168/bruce-gray/raku/ch-2.raku b/challenge-168/bruce-gray/raku/ch-2.raku new file mode 100644 index 0000000000..fa6862b386 --- /dev/null +++ b/challenge-168/bruce-gray/raku/ch-2.raku @@ -0,0 +1,23 @@ +use Prime::Factor; + +sub HP ( UInt $n is copy where * > 1 --> UInt ) { + # Could have also used: + # return ( $n, { + .&prime-factors.join } … &is-prime ).tail; + + $n = $n.&prime-factors.join.Int until $n.is-prime; + return $n; +} + + +if @*ARGS { + say "HP({$_}) = {HP(+$_)}" for @*ARGS; +} +else { + use Test; + plan 1; + + # From https://oeis.org/A037274 + constant @expected = 2, 3, 211, 5, 23, 7, 3331113965338635107, 311, 773, 11, 223, 13, 13367, 1129, 31636373, 17, 233, 19, 3318308475676071413, 37, 211, 23, 331319, 773, 3251, 13367, 227, 29, 547, 31, 241271, 311, 31397, 1129, 71129, 37, 373, 313, 3314192745739, 41, 379, 43, 22815088913, 3411949, 223, 47, 6161791591356884791277; + + is-deeply (2..48).map(&HP), @expected.Seq; +}
\ No newline at end of file |
