From 83b1f9e3d3e752ea9419b94dd7cdd76d662b6ccb Mon Sep 17 00:00:00 2001 From: Ben Davies Date: Fri, 15 Oct 2021 06:02:28 -0300 Subject: Add Ben Davies' challenge 134 Raku solutions --- challenge-134/ben-davies/raku/ch-1.raku | 7 +++++++ challenge-134/ben-davies/raku/ch-2.raku | 28 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 challenge-134/ben-davies/raku/ch-1.raku create mode 100644 challenge-134/ben-davies/raku/ch-2.raku diff --git a/challenge-134/ben-davies/raku/ch-1.raku b/challenge-134/ben-davies/raku/ch-1.raku new file mode 100644 index 0000000000..d3ec1c8fa7 --- /dev/null +++ b/challenge-134/ben-davies/raku/ch-1.raku @@ -0,0 +1,7 @@ +use v6; +unit sub MAIN() { + .say for pandigits(10).head(5); +} +sub pandigits(Int:D() $base --> Seq:D) { + (0..^$base).permutations.map(*.reduce: { ($^a + $^b) * $base }) +} diff --git a/challenge-134/ben-davies/raku/ch-2.raku b/challenge-134/ben-davies/raku/ch-2.raku new file mode 100644 index 0000000000..4ca97a4c5f --- /dev/null +++ b/challenge-134/ben-davies/raku/ch-2.raku @@ -0,0 +1,28 @@ +use v6; +unit sub MAIN(IntStr:D $m where * > 0, IntStr:D $n where * > 0) { + my @m = <1>...$m; + my @n = <1>...$n; + my @mn = @m X* @n; + + my Int:D $nw = @n.map(*.chars).max + 1; + my Int:D $cw = @m.map(*.chars).max + 1; + my Int:D $mw = @mn.map(*.chars).max + 1; + + put sprintf '╭%-s┬%-s╮', '─' x $nw, border('─', '┬'); + put sprintf '│%-s│%-s│', ' ' x ($nw - 1) ~ '✕', fmt-row(@n, '│'); + put sprintf '├%-s╆%-s┪', '─' x $nw, border('━', '┿'); + put sprintf '│%-s┃%-s┃', fmt-cell($_.head), fmt-row($_, '│') for @mn.rotor($n); + put sprintf '╰%-s┺%-s┛', '─' x $nw, border('━', '┷'); + put "Distinct Terms: $_" and + put "Count: $_.:<+>" given @mn.unique.sort; + + sub border(Str:D $token, Str:D $delim) { + join $delim, $token x $cw xx $n + } + sub fmt-row(@xs, Str:D $delim) { + @xs.map(&fmt-cell).join($delim) + } + sub fmt-cell(Int:D $mn) { + (' ' x $cw).chop($mn.chars) ~ $mn + } +} -- cgit