From f3c322db348183b77b45a5a4ca22b29dfbbc43ad Mon Sep 17 00:00:00 2001 From: Mark A Date: Mon, 7 Jun 2021 15:16:32 -0600 Subject: Challenge 116 Solutions (Raku) --- challenge-116/mark-anderson/raku/ch-1.raku | 27 +++++++++++++++++++++++++++ challenge-116/mark-anderson/raku/ch-2.raku | 13 +++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 challenge-116/mark-anderson/raku/ch-1.raku create mode 100644 challenge-116/mark-anderson/raku/ch-2.raku diff --git a/challenge-116/mark-anderson/raku/ch-1.raku b/challenge-116/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..d96929fe38 --- /dev/null +++ b/challenge-116/mark-anderson/raku/ch-1.raku @@ -0,0 +1,27 @@ +#!/usr/bin/env raku + +use Test; +plan 5; + +is number-sequence(1234), "1,2,3,4"; +is number-sequence(91011), "9,10,11"; +is number-sequence(10203), "10203"; +is number-sequence(997998999100010011002100310041005), (997..1005).join(","); +is number-sequence(34567891011123456789101113), "3456789101112,3456789101113"; + +sub number-sequence($N) +{ + for ($N.chars div 2)...1 + { + my $head = $N.substr(0, $_); + my $s = [\~] $head...*; + my ($k, $v) = $s.first(*.chars >= $N.chars, :kv); + + if $N eq $v + { + return ($head.Int..$head+$k).join(","); + } + } + + return $N; +} diff --git a/challenge-116/mark-anderson/raku/ch-2.raku b/challenge-116/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..07db888cc2 --- /dev/null +++ b/challenge-116/mark-anderson/raku/ch-2.raku @@ -0,0 +1,13 @@ +#!/usr/bin/env raku + +use Test; +plan 3; + +is sum-of-squares(34), 1; +is sum-of-squares(50), 1; +is sum-of-squares(52), 0; + +sub sum-of-squares($N) +{ + +($N.comb.map(* ** 2).sum.sqrt.narrow ~~ UInt); +} -- cgit