diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-05-29 02:04:20 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-29 02:04:20 +0100 |
| commit | 77de8a071fbba8d81e53ce9d22061454849e8de3 (patch) | |
| tree | 57b8d515d6c6d930a2af83c1dfa637ca9a22e14c /challenge-166 | |
| parent | c87454dbedc94cc532103c89c49f47bad94551e2 (diff) | |
| parent | 2f74a086037783c1cd1dea857af45d9c8f7e4fe3 (diff) | |
| download | perlweeklychallenge-club-77de8a071fbba8d81e53ce9d22061454849e8de3.tar.gz perlweeklychallenge-club-77de8a071fbba8d81e53ce9d22061454849e8de3.tar.bz2 perlweeklychallenge-club-77de8a071fbba8d81e53ce9d22061454849e8de3.zip | |
Merge pull request #6168 from arnesom/branch-for-challenge-166
Arne Sommer
Diffstat (limited to 'challenge-166')
| -rw-r--r-- | challenge-166/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-166/arne-sommer/raku/ch-1.raku | 13 | ||||
| -rwxr-xr-x | challenge-166/arne-sommer/raku/ch-2.raku | 41 | ||||
| -rwxr-xr-x | challenge-166/arne-sommer/raku/hexawords | 13 | ||||
| -rwxr-xr-x | challenge-166/arne-sommer/raku/hexawords-olist | 7 | ||||
| -rwxr-xr-x | challenge-166/arne-sommer/raku/k-dir-diff | 27 | ||||
| -rwxr-xr-x | challenge-166/arne-sommer/raku/k-dir-diff-multi | 41 | ||||
| -rwxr-xr-x | challenge-166/arne-sommer/setup.sh | 11 | ||||
| -rwxr-xr-x | challenge-166/arne-sommer/setup2.sh | 8 |
9 files changed, 162 insertions, 0 deletions
diff --git a/challenge-166/arne-sommer/blog.txt b/challenge-166/arne-sommer/blog.txt new file mode 100644 index 0000000000..e9728fa0b4 --- /dev/null +++ b/challenge-166/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/hexa-diff.html diff --git a/challenge-166/arne-sommer/raku/ch-1.raku b/challenge-166/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..c0f45e36ee --- /dev/null +++ b/challenge-166/arne-sommer/raku/ch-1.raku @@ -0,0 +1,13 @@ +#! /usr/bin/env raku + +unit sub MAIN +( + :d(:$dictionary) where $dictionary.IO.r = 'dictionary.txt', + :p(:$pure), +); + +my @dict = $pure + ?? $dictionary.IO.lines.grep( 1 < *.chars <= 8 ).grep( * ~~ /^<[abcdeflo]>+$/) + !! $dictionary.IO.lines.grep( 1 < *.chars <= 8 ).grep( * ~~ /^<[abcdefilost]>+$/); + +@dict.map({ say "0x" ~ TR/olist/01157/ }); diff --git a/challenge-166/arne-sommer/raku/ch-2.raku b/challenge-166/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..959b066aad --- /dev/null +++ b/challenge-166/arne-sommer/raku/ch-2.raku @@ -0,0 +1,41 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@dirs where @dirs.elems >= 3 && all(@dirs) ~~ .IO.d && all(@dirs) ~~ .IO.r); + +my $dir-count = @dirs.elems; + +my %dir; + +for @dirs -> $dir +{ + %dir{$dir} = $dir.IO.dir.map({ .d ?? .basename ~ '/' !! .basename }).Set; +} + +my %all = %dir.values>>.List.flat.Bag; + +my $max-length = (%all.keys>>.chars.max, @dirs>>.chars.max).max; + +my @head; + +for @dirs -> $dir +{ + @head.push: $dir.fmt("%-{$max-length}s"); +} + +say @head.join(" | "); + +say "-" x (3 + $max-length) * $dir-count; + +for sort keys %all -> $file +{ + next if %all{$file} == $dir-count; + + my @row; + + for @dirs -> $dir + { + @row.push: "{ (%dir{$dir}{$file} ?? $file !! '').fmt("%-{$max-length}s") }"; + } + + say @row.join(" | "); +} diff --git a/challenge-166/arne-sommer/raku/hexawords b/challenge-166/arne-sommer/raku/hexawords new file mode 100755 index 0000000000..c0f45e36ee --- /dev/null +++ b/challenge-166/arne-sommer/raku/hexawords @@ -0,0 +1,13 @@ +#! /usr/bin/env raku + +unit sub MAIN +( + :d(:$dictionary) where $dictionary.IO.r = 'dictionary.txt', + :p(:$pure), +); + +my @dict = $pure + ?? $dictionary.IO.lines.grep( 1 < *.chars <= 8 ).grep( * ~~ /^<[abcdeflo]>+$/) + !! $dictionary.IO.lines.grep( 1 < *.chars <= 8 ).grep( * ~~ /^<[abcdefilost]>+$/); + +@dict.map({ say "0x" ~ TR/olist/01157/ }); diff --git a/challenge-166/arne-sommer/raku/hexawords-olist b/challenge-166/arne-sommer/raku/hexawords-olist new file mode 100755 index 0000000000..cf4c1d8d62 --- /dev/null +++ b/challenge-166/arne-sommer/raku/hexawords-olist @@ -0,0 +1,7 @@ +#! /usr/bin/env raku + +unit sub MAIN (:d(:$dictionary) where $dictionary.IO.r = 'dictionary.txt'); + +my @dict = $dictionary.IO.lines.grep( 1 < *.chars <= 8 ).grep( * ~~ /^<[abcdefolist]>+$/); + +@dict.map({ say "0x" ~ TR/olist/01157/ }); diff --git a/challenge-166/arne-sommer/raku/k-dir-diff b/challenge-166/arne-sommer/raku/k-dir-diff new file mode 100755 index 0000000000..97a068c61f --- /dev/null +++ b/challenge-166/arne-sommer/raku/k-dir-diff @@ -0,0 +1,27 @@ +#! /usr/bin/env raku + +unit sub MAIN ($dir1 where $dir1.IO.d && $dir1.IO.r = 'dir_a', + $dir2 where $dir2.IO.d && $dir2.IO.r = 'dir_b', + $dir3 where $dir3.IO.d && $dir3.IO.r = 'dir_c', +); + +my %dir1 = $dir1.IO.dir.map({ .d ?? .basename ~ '/' !! .basename }).Set; +my %dir2 = $dir2.IO.dir.map({ .d ?? .basename ~ '/' !! .basename }).Set; +my %dir3 = $dir3.IO.dir.map({ .d ?? .basename ~ '/' !! .basename }).Set; + +my %all = %dir1 (|) %dir2 (|) %dir3; + +my $max-length = (%all.keys>>.chars.max, $dir1.chars, $dir2.chars, $dir3.chars).max; + +say "{ $dir1.fmt("%-{$max-length}s") } | { $dir2.fmt("%-{$max-length}s") } | { $dir3.fmt("%-{$max-length}s") }"; + +say "-" x $max-length * 3 + 6; + +for sort keys %all -> $file +{ + next if %dir1{$file} && %dir2{$file} && %dir3{$file}; + + say "{ (%dir1{$file} ?? $file !! '').fmt("%-{$max-length}s") } | " + ~ "{ (%dir2{$file} ?? $file !! '').fmt("%-{$max-length}s") } | " + ~ "{ (%dir3{$file} ?? $file !! '').fmt("%-{$max-length}s") }"; +} diff --git a/challenge-166/arne-sommer/raku/k-dir-diff-multi b/challenge-166/arne-sommer/raku/k-dir-diff-multi new file mode 100755 index 0000000000..959b066aad --- /dev/null +++ b/challenge-166/arne-sommer/raku/k-dir-diff-multi @@ -0,0 +1,41 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@dirs where @dirs.elems >= 3 && all(@dirs) ~~ .IO.d && all(@dirs) ~~ .IO.r); + +my $dir-count = @dirs.elems; + +my %dir; + +for @dirs -> $dir +{ + %dir{$dir} = $dir.IO.dir.map({ .d ?? .basename ~ '/' !! .basename }).Set; +} + +my %all = %dir.values>>.List.flat.Bag; + +my $max-length = (%all.keys>>.chars.max, @dirs>>.chars.max).max; + +my @head; + +for @dirs -> $dir +{ + @head.push: $dir.fmt("%-{$max-length}s"); +} + +say @head.join(" | "); + +say "-" x (3 + $max-length) * $dir-count; + +for sort keys %all -> $file +{ + next if %all{$file} == $dir-count; + + my @row; + + for @dirs -> $dir + { + @row.push: "{ (%dir{$dir}{$file} ?? $file !! '').fmt("%-{$max-length}s") }"; + } + + say @row.join(" | "); +} diff --git a/challenge-166/arne-sommer/setup.sh b/challenge-166/arne-sommer/setup.sh new file mode 100755 index 0000000000..fd117208a7 --- /dev/null +++ b/challenge-166/arne-sommer/setup.sh @@ -0,0 +1,11 @@ +#! /bin/sh + +mkdir dir_a dir_a/Old_Fonts/ dir_b dir_c +cd dir_a +touch Arial.ttf Comic_Sans.ttf Georgia.ttf Helvetica.ttf Impact.otf Verdana.ttf + +cd ../dir_b +touch Arial.ttf Comic_Sans.ttf Courier_New.ttf Helvetica.ttf Impact.otf Tahoma.ttf Verdana.ttf + +cd ../dir_c +touch Arial.ttf Courier_New.ttf Helvetica.ttf Impact.otf Monaco.ttf Verdana.ttf diff --git a/challenge-166/arne-sommer/setup2.sh b/challenge-166/arne-sommer/setup2.sh new file mode 100755 index 0000000000..5b33df3537 --- /dev/null +++ b/challenge-166/arne-sommer/setup2.sh @@ -0,0 +1,8 @@ +#! /bin/sh + +mkdir dir_d dir_e +cd dir_d +touch Arial.ttf FrutigerBold.ttf + +cd ../dir_e +touch Arial.ttf Impact.otf HelveticaModern.ttf |
