From 3080d0eba0493a58a3f407db3bddd66a3bd4eb82 Mon Sep 17 00:00:00 2001 From: arnesom Date: Wed, 26 Jun 2024 00:33:16 +0200 Subject: Arne Sommer --- challenge-275/arne-sommer/blog.txt | 1 + challenge-275/arne-sommer/raku/broken-keys | 13 +++++++++++++ challenge-275/arne-sommer/raku/broken-keys-lc | 14 ++++++++++++++ challenge-275/arne-sommer/raku/ch-1.raku | 14 ++++++++++++++ challenge-275/arne-sommer/raku/ch-2.raku | 16 ++++++++++++++++ challenge-275/arne-sommer/raku/replace-digits | 16 ++++++++++++++++ 6 files changed, 74 insertions(+) create mode 100644 challenge-275/arne-sommer/blog.txt create mode 100755 challenge-275/arne-sommer/raku/broken-keys create mode 100755 challenge-275/arne-sommer/raku/broken-keys-lc create mode 100755 challenge-275/arne-sommer/raku/ch-1.raku create mode 100755 challenge-275/arne-sommer/raku/ch-2.raku create mode 100755 challenge-275/arne-sommer/raku/replace-digits 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; +} -- cgit