aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-275/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-275/arne-sommer/raku/broken-keys13
-rwxr-xr-xchallenge-275/arne-sommer/raku/broken-keys-lc14
-rwxr-xr-xchallenge-275/arne-sommer/raku/ch-1.raku14
-rwxr-xr-xchallenge-275/arne-sommer/raku/ch-2.raku16
-rwxr-xr-xchallenge-275/arne-sommer/raku/replace-digits16
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;
+}