diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-10-05 19:47:27 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-05 19:47:27 +0100 |
| commit | d05dccdf6a24178a492faf123a25a7dda21d4769 (patch) | |
| tree | 71bd7a2720ebda65c29e0fcdb001f2b3bce6ea49 | |
| parent | 2acd992c0693e1842fddac63ee5ce621898aa70c (diff) | |
| parent | 630cba89c05c6190a669bef703b88aafc8ee3834 (diff) | |
| download | perlweeklychallenge-club-d05dccdf6a24178a492faf123a25a7dda21d4769.tar.gz perlweeklychallenge-club-d05dccdf6a24178a492faf123a25a7dda21d4769.tar.bz2 perlweeklychallenge-club-d05dccdf6a24178a492faf123a25a7dda21d4769.zip | |
Merge pull request #12787 from arnesom/challenge-341-arne-sommer
week 341 Arne Sommer
| -rw-r--r-- | challenge-341/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-341/arne-sommer/raku/broken-keyboard | 20 | ||||
| -rwxr-xr-x | challenge-341/arne-sommer/raku/ch-1.raku | 20 | ||||
| -rwxr-xr-x | challenge-341/arne-sommer/raku/ch-2.raku | 29 | ||||
| -rwxr-xr-x | challenge-341/arne-sommer/raku/reverse-prefix | 29 |
5 files changed, 99 insertions, 0 deletions
diff --git a/challenge-341/arne-sommer/blog.txt b/challenge-341/arne-sommer/blog.txt new file mode 100644 index 0000000000..e8030b3714 --- /dev/null +++ b/challenge-341/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/reverse-broken-again.html
\ No newline at end of file diff --git a/challenge-341/arne-sommer/raku/broken-keyboard b/challenge-341/arne-sommer/raku/broken-keyboard new file mode 100755 index 0000000000..a79fc83caf --- /dev/null +++ b/challenge-341/arne-sommer/raku/broken-keyboard @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +unit sub MAIN (:s(:$str) where $str ~~ /^ <[a..z A..Z \s]>+ $/, + :k(:$keys) where $keys ~~ /^ <[a..z]>* $/, + :v(:$verbose)); + +my @words = $str.lc.words; +my @keys = $keys.lc.comb; +my @typeable = @words.grep({ .contains(none(@keys)) }); + +die "Duplicate keys" if @keys.repeated; + +if $verbose +{ + say ": Words: { @words.map({ "'$_'" }).join(", ") }"; + say ": Keys: { @keys.map({ "'$_'" }).join(", ") }"; + say ": Typeable words: { @typeable.map({ "'$_'" }).join(", ") }"; +} + +say @typeable.elems; diff --git a/challenge-341/arne-sommer/raku/ch-1.raku b/challenge-341/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..a79fc83caf --- /dev/null +++ b/challenge-341/arne-sommer/raku/ch-1.raku @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +unit sub MAIN (:s(:$str) where $str ~~ /^ <[a..z A..Z \s]>+ $/, + :k(:$keys) where $keys ~~ /^ <[a..z]>* $/, + :v(:$verbose)); + +my @words = $str.lc.words; +my @keys = $keys.lc.comb; +my @typeable = @words.grep({ .contains(none(@keys)) }); + +die "Duplicate keys" if @keys.repeated; + +if $verbose +{ + say ": Words: { @words.map({ "'$_'" }).join(", ") }"; + say ": Keys: { @keys.map({ "'$_'" }).join(", ") }"; + say ": Typeable words: { @typeable.map({ "'$_'" }).join(", ") }"; +} + +say @typeable.elems; diff --git a/challenge-341/arne-sommer/raku/ch-2.raku b/challenge-341/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..6fed7269f9 --- /dev/null +++ b/challenge-341/arne-sommer/raku/ch-2.raku @@ -0,0 +1,29 @@ +#! /usr/bin/env raku + +unit sub MAIN (:s($str) where $str.chars > 0, + :c($char) where $char.chars == 1, + :v(:$verbose)); + +my $index = $str.index($char); + +if $index +{ + my $pre = $str.substr(0, $index +1); + my $flipped = $pre.flip; + my $post = $str.substr($index +1); + + if $verbose + { + say ": Index: $index"; + say ": Pre: '$pre'"; + say ": Flipped: '$flipped'"; + say ": Post: '$post'"; + } + + say $flipped ~ $post; +} +else +{ + say $str; +} + diff --git a/challenge-341/arne-sommer/raku/reverse-prefix b/challenge-341/arne-sommer/raku/reverse-prefix new file mode 100755 index 0000000000..6fed7269f9 --- /dev/null +++ b/challenge-341/arne-sommer/raku/reverse-prefix @@ -0,0 +1,29 @@ +#! /usr/bin/env raku + +unit sub MAIN (:s($str) where $str.chars > 0, + :c($char) where $char.chars == 1, + :v(:$verbose)); + +my $index = $str.index($char); + +if $index +{ + my $pre = $str.substr(0, $index +1); + my $flipped = $pre.flip; + my $post = $str.substr($index +1); + + if $verbose + { + say ": Index: $index"; + say ": Pre: '$pre'"; + say ": Flipped: '$flipped'"; + say ": Post: '$post'"; + } + + say $flipped ~ $post; +} +else +{ + say $str; +} + |
