diff options
| author | Arne Sommer <arne@bbop.org> | 2025-10-04 17:20:08 +0200 |
|---|---|---|
| committer | Arne Sommer <arne@bbop.org> | 2025-10-04 17:20:08 +0200 |
| commit | 630cba89c05c6190a669bef703b88aafc8ee3834 (patch) | |
| tree | e448e9506f6c04b0bbea80db8e095b206f528ddc | |
| parent | 9506417ade8b33371ed335c95719c3ad5bf83c33 (diff) | |
| download | perlweeklychallenge-club-630cba89c05c6190a669bef703b88aafc8ee3834.tar.gz perlweeklychallenge-club-630cba89c05c6190a669bef703b88aafc8ee3834.tar.bz2 perlweeklychallenge-club-630cba89c05c6190a669bef703b88aafc8ee3834.zip | |
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; +} + |
