aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-06-26 09:36:55 +0100
committerGitHub <noreply@github.com>2024-06-26 09:36:55 +0100
commite07f214395c0a8df5d46f88f6b5d3914019aa784 (patch)
tree45959be7d6aafe4600a6facdd5c1e453544ece4b
parent5a27ab5216e132a2b48da1b61389defcbba42f09 (diff)
parent3080d0eba0493a58a3f407db3bddd66a3bd4eb82 (diff)
downloadperlweeklychallenge-club-e07f214395c0a8df5d46f88f6b5d3914019aa784.tar.gz
perlweeklychallenge-club-e07f214395c0a8df5d46f88f6b5d3914019aa784.tar.bz2
perlweeklychallenge-club-e07f214395c0a8df5d46f88f6b5d3914019aa784.zip
Merge pull request #10329 from arnesom/branch-for-challenge-275
Arne Sommer
-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;
+}