diff options
| -rw-r--r-- | challenge-275/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-275/arne-sommer/raku/broken-keys | 13 | ||||
| -rwxr-xr-x | challenge-275/arne-sommer/raku/broken-keys-lc | 14 | ||||
| -rwxr-xr-x | challenge-275/arne-sommer/raku/ch-1.raku | 14 | ||||
| -rwxr-xr-x | challenge-275/arne-sommer/raku/ch-2.raku | 16 | ||||
| -rwxr-xr-x | challenge-275/arne-sommer/raku/replace-digits | 16 |
6 files changed, 74 insertions, 0 deletions
diff --git a/challenge-275/arne-sommer/blog.txt b/challenge-275/arne-sommer/blog.txt new file mode 100644 index 0000000000..7d2abce8da --- /dev/null +++ b/challenge-275/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/broken-digits.html diff --git a/challenge-275/arne-sommer/raku/broken-keys b/challenge-275/arne-sommer/raku/broken-keys new file mode 100755 index 0000000000..037c7b4185 --- /dev/null +++ b/challenge-275/arne-sommer/raku/broken-keys @@ -0,0 +1,13 @@ +#! /usr/bin/env raku + +unit sub MAIN ($sentence where $sentence.chars > 0, *@keys where @keys.elems > 0, :v(:$verbose)); + +my @words = $sentence.words; + +say ": Words: { @words.map({ "'$_'"}).join(", ")}" if $verbose; + +my @fully = @words.map({ $_.contains(any(@keys)) ?? 0 !! 1 }); + +say ": Fully: { @fully.join(", ") }" if $verbose; + +say @fully.sum; diff --git a/challenge-275/arne-sommer/raku/broken-keys-lc b/challenge-275/arne-sommer/raku/broken-keys-lc new file mode 100755 index 0000000000..d6bb4bb041 --- /dev/null +++ b/challenge-275/arne-sommer/raku/broken-keys-lc @@ -0,0 +1,14 @@ +#! /usr/bin/env raku + +unit sub MAIN ($sentence where $sentence.chars > 0, *@keys where @keys.elems > 0, :v(:$verbose)); + +my @words = $sentence.words; +my @lc_keys = @keys>>.lc; + +say ": Words: { @words.map({ "'$_'"}).join(", ")}" if $verbose; + +my @fully = @words.map({ $_.lc.contains(any(@lc_keys)) ?? 0 !! 1 }); + +say ": Fully: { @fully.join(", ") }" if $verbose; + +say @fully.sum; diff --git a/challenge-275/arne-sommer/raku/ch-1.raku b/challenge-275/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..d6bb4bb041 --- /dev/null +++ b/challenge-275/arne-sommer/raku/ch-1.raku @@ -0,0 +1,14 @@ +#! /usr/bin/env raku + +unit sub MAIN ($sentence where $sentence.chars > 0, *@keys where @keys.elems > 0, :v(:$verbose)); + +my @words = $sentence.words; +my @lc_keys = @keys>>.lc; + +say ": Words: { @words.map({ "'$_'"}).join(", ")}" if $verbose; + +my @fully = @words.map({ $_.lc.contains(any(@lc_keys)) ?? 0 !! 1 }); + +say ": Fully: { @fully.join(", ") }" if $verbose; + +say @fully.sum; diff --git a/challenge-275/arne-sommer/raku/ch-2.raku b/challenge-275/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..7ff75b1755 --- /dev/null +++ b/challenge-275/arne-sommer/raku/ch-2.raku @@ -0,0 +1,16 @@ +#! /usr/bin/env raku + +unit sub MAIN ($str where $str ~~ /^<[a..z]> <[a..z 0..9]>*$/ && $str.chars > 0); + +$str.comb.map( *.&do-magic ).join.say; + +sub do-magic ($letter) +{ + state $prev = ""; + + return ($prev.ord + $letter).chr if $letter eq any('0' .. '9'); + + $prev = $letter; + + return $letter; +} diff --git a/challenge-275/arne-sommer/raku/replace-digits b/challenge-275/arne-sommer/raku/replace-digits new file mode 100755 index 0000000000..7ff75b1755 --- /dev/null +++ b/challenge-275/arne-sommer/raku/replace-digits @@ -0,0 +1,16 @@ +#! /usr/bin/env raku + +unit sub MAIN ($str where $str ~~ /^<[a..z]> <[a..z 0..9]>*$/ && $str.chars > 0); + +$str.comb.map( *.&do-magic ).join.say; + +sub do-magic ($letter) +{ + state $prev = ""; + + return ($prev.ord + $letter).chr if $letter eq any('0' .. '9'); + + $prev = $letter; + + return $letter; +} |
