diff options
| author | Mark <53903062+andemark@users.noreply.github.com> | 2022-05-23 06:43:17 +0000 |
|---|---|---|
| committer | Mark <53903062+andemark@users.noreply.github.com> | 2022-05-23 06:43:17 +0000 |
| commit | ae23f43ebaff0ce0ad5797688bd7b999bced977d (patch) | |
| tree | 49408b24d60a2b8ef665965fac8bd848a882886c | |
| parent | 26abf3a1c1a8acc901fe5505282bad02172d50f4 (diff) | |
| download | perlweeklychallenge-club-ae23f43ebaff0ce0ad5797688bd7b999bced977d.tar.gz perlweeklychallenge-club-ae23f43ebaff0ce0ad5797688bd7b999bced977d.tar.bz2 perlweeklychallenge-club-ae23f43ebaff0ce0ad5797688bd7b999bced977d.zip | |
Challenge 166 Solutions (Raku)
28 files changed, 94 insertions, 0 deletions
diff --git a/challenge-166/mark-anderson/raku/ch-1.raku b/challenge-166/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..42ab5c3de2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/ch-1.raku @@ -0,0 +1,13 @@ +#!/usr/bin/env raku + +for '/usr/share/dict/words'.IO.lines +{ + next unless .chars ~~ 2..8; + + my \word = .lc; + + if word ~~ /^ <[a..filost]>+ $/ + { + say word.trans('ilost' => '11057') + } +} diff --git a/challenge-166/mark-anderson/raku/ch-2.raku b/challenge-166/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..270ba3252f --- /dev/null +++ b/challenge-166/mark-anderson/raku/ch-2.raku @@ -0,0 +1,81 @@ +#!/usr/bin/env raku + +use Test; + +=begin dir_contents + +dir_a dir_b dir_c dir_d +------------------------------------------------------------------------- +Arial.ttf Arial.ttf Arial.ttf Arial.ttf +Comic_Sans.ttf Comic_Sans.ttf Courier_New.ttf Georgia.ttf +Georgia.ttf Courier_New.ttf Helvetica.ttf Helvetica.ttf +Helvetica.ttf Helvetica.ttf Impact.otf Impact.otf +Impact.otf Impact.otf Monaco.ttf Monaco.ttf +Old_Fonts/ Tahoma.ttf Verdana.ttf Old_Fonts/ +Verdana.ttf Verdana.ttf Tahoma.ttf + Verdana.ttf +=end dir_contents + +is k-dir-diff(<dir_a dir_b>), q:to/END/; +dir_a | dir_b +----------- | --------------- + | Courier_New.ttf +Georgia.ttf | +Old_Fonts/ | + | Tahoma.ttf +END + +is k-dir-diff(<dir_a dir_b dir_c>), q:to/END/; +dir_a | dir_b | dir_c +-------------- | --------------- | --------------- +Comic_Sans.ttf | Comic_Sans.ttf | + | Courier_New.ttf | Courier_New.ttf +Georgia.ttf | | + | | Monaco.ttf +Old_Fonts/ | | + | Tahoma.ttf | +END + +is k-dir-diff(<dir_a dir_b dir_c dir_d>), q:to/END/; +dir_a | dir_b | dir_c | dir_d +-------------- | --------------- | --------------- | ----------- +Comic_Sans.ttf | Comic_Sans.ttf | | + | Courier_New.ttf | Courier_New.ttf | +Georgia.ttf | | | Georgia.ttf + | | Monaco.ttf | Monaco.ttf +Old_Fonts/ | | | Old_Fonts/ + | Tahoma.ttf | | Tahoma.ttf +END + +sub k-dir-diff(*@dirs) +{ + my %contents; + + for @dirs -> $dir + { + %contents{$dir} = qq:x{ls -F $dir}.split("\n", :skip-empty).List + } + + my $bag = Bag.new: %contents.values.map: |*; + + my @lines = gather for $bag.keys.sort -> $file + { + next if $bag{$file} == @dirs; + + my @line = gather for @dirs -> $dir + { + take %contents{$dir} (cont) $file ?? $file !! '' + } + + take @line; + } + + my $fmt = .join: ' | ' with gather for [Z] @lines + { + take '%-' ~ .classify({.chars}).keys.max ~ 's' + } + + sprintf("$fmt\n", @dirs) ~ + sprintf($fmt.subst('-', '-.', :g) ~ "\n", '-' x 100 xx @dirs) ~ + @lines.map({sprintf("$fmt\n", .flat)}).join +} diff --git a/challenge-166/mark-anderson/raku/dir_a/Arial.ttf b/challenge-166/mark-anderson/raku/dir_a/Arial.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_a/Arial.ttf diff --git a/challenge-166/mark-anderson/raku/dir_a/Comic_Sans.ttf b/challenge-166/mark-anderson/raku/dir_a/Comic_Sans.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_a/Comic_Sans.ttf diff --git a/challenge-166/mark-anderson/raku/dir_a/Georgia.ttf b/challenge-166/mark-anderson/raku/dir_a/Georgia.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_a/Georgia.ttf diff --git a/challenge-166/mark-anderson/raku/dir_a/Helvetica.ttf b/challenge-166/mark-anderson/raku/dir_a/Helvetica.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_a/Helvetica.ttf diff --git a/challenge-166/mark-anderson/raku/dir_a/Impact.otf b/challenge-166/mark-anderson/raku/dir_a/Impact.otf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_a/Impact.otf diff --git a/challenge-166/mark-anderson/raku/dir_a/Verdana.ttf b/challenge-166/mark-anderson/raku/dir_a/Verdana.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_a/Verdana.ttf diff --git a/challenge-166/mark-anderson/raku/dir_b/Arial.ttf b/challenge-166/mark-anderson/raku/dir_b/Arial.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_b/Arial.ttf diff --git a/challenge-166/mark-anderson/raku/dir_b/Comic_Sans.ttf b/challenge-166/mark-anderson/raku/dir_b/Comic_Sans.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_b/Comic_Sans.ttf diff --git a/challenge-166/mark-anderson/raku/dir_b/Courier_New.ttf b/challenge-166/mark-anderson/raku/dir_b/Courier_New.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_b/Courier_New.ttf diff --git a/challenge-166/mark-anderson/raku/dir_b/Helvetica.ttf b/challenge-166/mark-anderson/raku/dir_b/Helvetica.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_b/Helvetica.ttf diff --git a/challenge-166/mark-anderson/raku/dir_b/Impact.otf b/challenge-166/mark-anderson/raku/dir_b/Impact.otf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_b/Impact.otf diff --git a/challenge-166/mark-anderson/raku/dir_b/Tahoma.ttf b/challenge-166/mark-anderson/raku/dir_b/Tahoma.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_b/Tahoma.ttf diff --git a/challenge-166/mark-anderson/raku/dir_b/Verdana.ttf b/challenge-166/mark-anderson/raku/dir_b/Verdana.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_b/Verdana.ttf diff --git a/challenge-166/mark-anderson/raku/dir_c/Arial.ttf b/challenge-166/mark-anderson/raku/dir_c/Arial.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_c/Arial.ttf diff --git a/challenge-166/mark-anderson/raku/dir_c/Courier_New.ttf b/challenge-166/mark-anderson/raku/dir_c/Courier_New.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_c/Courier_New.ttf diff --git a/challenge-166/mark-anderson/raku/dir_c/Helvetica.ttf b/challenge-166/mark-anderson/raku/dir_c/Helvetica.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_c/Helvetica.ttf diff --git a/challenge-166/mark-anderson/raku/dir_c/Impact.otf b/challenge-166/mark-anderson/raku/dir_c/Impact.otf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_c/Impact.otf diff --git a/challenge-166/mark-anderson/raku/dir_c/Monaco.ttf b/challenge-166/mark-anderson/raku/dir_c/Monaco.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_c/Monaco.ttf diff --git a/challenge-166/mark-anderson/raku/dir_c/Verdana.ttf b/challenge-166/mark-anderson/raku/dir_c/Verdana.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_c/Verdana.ttf diff --git a/challenge-166/mark-anderson/raku/dir_d/Arial.ttf b/challenge-166/mark-anderson/raku/dir_d/Arial.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_d/Arial.ttf diff --git a/challenge-166/mark-anderson/raku/dir_d/Georgia.ttf b/challenge-166/mark-anderson/raku/dir_d/Georgia.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_d/Georgia.ttf diff --git a/challenge-166/mark-anderson/raku/dir_d/Helvetica.ttf b/challenge-166/mark-anderson/raku/dir_d/Helvetica.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_d/Helvetica.ttf diff --git a/challenge-166/mark-anderson/raku/dir_d/Impact.otf b/challenge-166/mark-anderson/raku/dir_d/Impact.otf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_d/Impact.otf diff --git a/challenge-166/mark-anderson/raku/dir_d/Monaco.ttf b/challenge-166/mark-anderson/raku/dir_d/Monaco.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_d/Monaco.ttf diff --git a/challenge-166/mark-anderson/raku/dir_d/Tahoma.ttf b/challenge-166/mark-anderson/raku/dir_d/Tahoma.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_d/Tahoma.ttf diff --git a/challenge-166/mark-anderson/raku/dir_d/Verdana.ttf b/challenge-166/mark-anderson/raku/dir_d/Verdana.ttf new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/challenge-166/mark-anderson/raku/dir_d/Verdana.ttf |
