diff options
| -rw-r--r-- | challenge-111/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-111/arne-sommer/raku/ch-1.raku | 7 | ||||
| -rwxr-xr-x | challenge-111/arne-sommer/raku/ch-2.raku | 20 | ||||
| -rwxr-xr-x | challenge-111/arne-sommer/raku/ordered-letters | 20 | ||||
| -rwxr-xr-x | challenge-111/arne-sommer/raku/search-matrix | 11 | ||||
| -rwxr-xr-x | challenge-111/arne-sommer/raku/search-matrix2 | 7 |
6 files changed, 66 insertions, 0 deletions
diff --git a/challenge-111/arne-sommer/blog.txt b/challenge-111/arne-sommer/blog.txt new file mode 100644 index 0000000000..c555c2e24a --- /dev/null +++ b/challenge-111/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/ordered-search.html diff --git a/challenge-111/arne-sommer/raku/ch-1.raku b/challenge-111/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..c579270884 --- /dev/null +++ b/challenge-111/arne-sommer/raku/ch-1.raku @@ -0,0 +1,7 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $input, Str $matrix = "1 2 3 5 7 | 9 11 15 19 20 | 23 24 25 29 31 | 32 33 39 40 42 | 45 47 48 49 50"); + +my @m = $matrix.split("|")>>.words>>.List; + +say + (so any(@m.List.flat) == $input); diff --git a/challenge-111/arne-sommer/raku/ch-2.raku b/challenge-111/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..3a0103009d --- /dev/null +++ b/challenge-111/arne-sommer/raku/ch-2.raku @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +unit sub MAIN (:d(:$dictionary) where $dictionary.IO.r = "/usr/share/dict/british-english", :a($all)); + +my @dict = $dictionary.IO.lines.grep(* !~~ /\W/).map( *.lc ).sort({ $^b.chars <=> $^a.chars }); + +my $found = 0; + +for @dict -> $word +{ + last if !$all && $word.chars < $found; + + my $sorted = $word.comb.sort.join; + + if $word eq $sorted + { + say $word; + $found = $word.chars; + } +} diff --git a/challenge-111/arne-sommer/raku/ordered-letters b/challenge-111/arne-sommer/raku/ordered-letters new file mode 100755 index 0000000000..3a0103009d --- /dev/null +++ b/challenge-111/arne-sommer/raku/ordered-letters @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +unit sub MAIN (:d(:$dictionary) where $dictionary.IO.r = "/usr/share/dict/british-english", :a($all)); + +my @dict = $dictionary.IO.lines.grep(* !~~ /\W/).map( *.lc ).sort({ $^b.chars <=> $^a.chars }); + +my $found = 0; + +for @dict -> $word +{ + last if !$all && $word.chars < $found; + + my $sorted = $word.comb.sort.join; + + if $word eq $sorted + { + say $word; + $found = $word.chars; + } +} diff --git a/challenge-111/arne-sommer/raku/search-matrix b/challenge-111/arne-sommer/raku/search-matrix new file mode 100755 index 0000000000..0e0e2df117 --- /dev/null +++ b/challenge-111/arne-sommer/raku/search-matrix @@ -0,0 +1,11 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $input ); + +my @m = [[ 1, 2, 3, 5, 7 ], + [ 9, 11, 15, 19, 20 ], + [ 23, 24, 25, 29, 31 ], + [ 32, 33, 39, 40, 42 ], + [ 45, 47, 48, 49, 50 ]]; + +say + so any(@m>>.List.flat) == $input; diff --git a/challenge-111/arne-sommer/raku/search-matrix2 b/challenge-111/arne-sommer/raku/search-matrix2 new file mode 100755 index 0000000000..c579270884 --- /dev/null +++ b/challenge-111/arne-sommer/raku/search-matrix2 @@ -0,0 +1,7 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int $input, Str $matrix = "1 2 3 5 7 | 9 11 15 19 20 | 23 24 25 29 31 | 32 33 39 40 42 | 45 47 48 49 50"); + +my @m = $matrix.split("|")>>.words>>.List; + +say + (so any(@m.List.flat) == $input); |
