aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Davies <kaiepi@outlook.com>2021-10-15 06:02:28 -0300
committerBen Davies <kaiepi@outlook.com>2021-10-15 06:08:10 -0300
commit83b1f9e3d3e752ea9419b94dd7cdd76d662b6ccb (patch)
tree3a873dcb43096a869988f5d7e63fc534bbc4c613
parent3848e22bb52915214d0fa5c954175604f928f774 (diff)
downloadperlweeklychallenge-club-83b1f9e3d3e752ea9419b94dd7cdd76d662b6ccb.tar.gz
perlweeklychallenge-club-83b1f9e3d3e752ea9419b94dd7cdd76d662b6ccb.tar.bz2
perlweeklychallenge-club-83b1f9e3d3e752ea9419b94dd7cdd76d662b6ccb.zip
Add Ben Davies' challenge 134 Raku solutions
-rw-r--r--challenge-134/ben-davies/raku/ch-1.raku7
-rw-r--r--challenge-134/ben-davies/raku/ch-2.raku28
2 files changed, 35 insertions, 0 deletions
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
+ }
+}