diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-10-15 10:12:14 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-15 10:12:14 +0100 |
| commit | bb0431616d0c078e947d426f7ce38bdb821cec4b (patch) | |
| tree | 2abed8bcaa352297877ac93bbb9f7116216e8722 | |
| parent | d866ba27f623b612f59c8d65327973ef3c9dfdb8 (diff) | |
| parent | 83b1f9e3d3e752ea9419b94dd7cdd76d662b6ccb (diff) | |
| download | perlweeklychallenge-club-bb0431616d0c078e947d426f7ce38bdb821cec4b.tar.gz perlweeklychallenge-club-bb0431616d0c078e947d426f7ce38bdb821cec4b.tar.bz2 perlweeklychallenge-club-bb0431616d0c078e947d426f7ce38bdb821cec4b.zip | |
Merge pull request #5024 from Kaiepi/challenge-134
Add Ben Davies' challenge 134 Raku solutions
| -rw-r--r-- | challenge-134/ben-davies/raku/ch-1.raku | 7 | ||||
| -rw-r--r-- | challenge-134/ben-davies/raku/ch-2.raku | 28 |
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 + } +} |
