From 520e96802c6a034a587e1ce33dd5edd4953f5075 Mon Sep 17 00:00:00 2001 From: Mark A Date: Mon, 29 Mar 2021 00:40:25 -0600 Subject: Challenge 106 Solutions (Raku) --- challenge-106/mark-anderson/raku/ch-1.raku | 12 ++++++++++++ challenge-106/mark-anderson/raku/ch-2.raku | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 challenge-106/mark-anderson/raku/ch-1.raku create mode 100644 challenge-106/mark-anderson/raku/ch-2.raku diff --git a/challenge-106/mark-anderson/raku/ch-1.raku b/challenge-106/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..b04144a364 --- /dev/null +++ b/challenge-106/mark-anderson/raku/ch-1.raku @@ -0,0 +1,12 @@ +#!/usr/bin/env raku + +use Test; +plan 3; + +is max-gap(2, 9, 3, 5), 4; +is max-gap(1, 3, 8, 2, 0), 5; +is max-gap(5), 0; + +multi max-gap($N) { 0 } + +multi max-gap(*@N) { max @N.sort.rotor(2 => -1).map({ .[1] - .[0] }) } diff --git a/challenge-106/mark-anderson/raku/ch-2.raku b/challenge-106/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..2366e111ad --- /dev/null +++ b/challenge-106/mark-anderson/raku/ch-2.raku @@ -0,0 +1,18 @@ +#!/usr/bin/env raku + +use Test; +plan 4; + +is decimal-string(1, 3), "0.(3)"; +is decimal-string(1, 2), "0.5"; +is decimal-string(5, 66), "0.0(75)"; +is decimal-string(3227, 555), "5.8(144)"; + +sub decimal-string($n, $d) +{ + my ($non-rep, $rep) = ($n/$d).base-repeating; + + return $non-rep unless $rep; + + return sprintf '%s(%s)', $non-rep, $rep; +} -- cgit