From 08127c996ba47c23231a9ccd6c4966dbae03d666 Mon Sep 17 00:00:00 2001 From: arnesom Date: Sun, 11 Dec 2022 22:18:39 +0100 Subject: Arne Sommer --- challenge-194/arne-sommer/blog.txt | 1 + challenge-194/arne-sommer/raku/ch-1.raku | 17 +++++++++++++++++ challenge-194/arne-sommer/raku/ch-2.raku | 15 +++++++++++++++ challenge-194/arne-sommer/raku/digital-clock | 17 +++++++++++++++++ challenge-194/arne-sommer/raku/frequency-equalizer | 15 +++++++++++++++ 5 files changed, 65 insertions(+) create mode 100644 challenge-194/arne-sommer/blog.txt create mode 100755 challenge-194/arne-sommer/raku/ch-1.raku create mode 100755 challenge-194/arne-sommer/raku/ch-2.raku create mode 100755 challenge-194/arne-sommer/raku/digital-clock create mode 100755 challenge-194/arne-sommer/raku/frequency-equalizer diff --git a/challenge-194/arne-sommer/blog.txt b/challenge-194/arne-sommer/blog.txt new file mode 100644 index 0000000000..20b92ad262 --- /dev/null +++ b/challenge-194/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/digital-frequalizer.html diff --git a/challenge-194/arne-sommer/raku/ch-1.raku b/challenge-194/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..0f70f1d9f6 --- /dev/null +++ b/challenge-194/arne-sommer/raku/ch-1.raku @@ -0,0 +1,17 @@ +#! /usr/bin/env raku + +subset MissingTime where /^<[012\?]><[0..9\?]>\:<[0..5\?]><[0..9\?]>$/; + +unit sub MAIN (MissingTime $time where $time.comb.Bag == 1); + +die "Illegal time" if $time.substr(0,1) eq "2" && $time.substr(1,1) ne any <0 1 2 3 ?>; + +given $time +{ + when .substr(0,1) eq "?" && .substr(1,1) < 4 { say "2"; } # "?[0..3]:**" + when .substr(0,1) eq "?" { say "1"; } # "?[4..9]:**" + when .substr(1,1) eq "?" && .substr(0,1) < 2 { say "9"; } # "[0..1]?:**" + when .substr(1,1) eq "?" { say "3"; } # "2?:**" + when .substr(3,1) eq "?" { say "5"; } # "**:?*" + when .substr(4,1) eq "?" { say "9"; } # "**:*?" +} diff --git a/challenge-194/arne-sommer/raku/ch-2.raku b/challenge-194/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..465e52bf81 --- /dev/null +++ b/challenge-194/arne-sommer/raku/ch-2.raku @@ -0,0 +1,15 @@ +#! /usr/bin/env raku + +subset az where /^<[a..z]>+$/; + +unit sub MAIN (az $s, :v(:$verbose)); + +my @freq = $s.comb.Bag.values.sort; + +say ": Frequency sorted: @freq[]" if $verbose; + +@freq.push(@freq.pop - 1); + +say ": Frequency lowered: @freq[]" if $verbose; + +say ( [==] @freq ) ?? 1 !! 0; diff --git a/challenge-194/arne-sommer/raku/digital-clock b/challenge-194/arne-sommer/raku/digital-clock new file mode 100755 index 0000000000..0f70f1d9f6 --- /dev/null +++ b/challenge-194/arne-sommer/raku/digital-clock @@ -0,0 +1,17 @@ +#! /usr/bin/env raku + +subset MissingTime where /^<[012\?]><[0..9\?]>\:<[0..5\?]><[0..9\?]>$/; + +unit sub MAIN (MissingTime $time where $time.comb.Bag == 1); + +die "Illegal time" if $time.substr(0,1) eq "2" && $time.substr(1,1) ne any <0 1 2 3 ?>; + +given $time +{ + when .substr(0,1) eq "?" && .substr(1,1) < 4 { say "2"; } # "?[0..3]:**" + when .substr(0,1) eq "?" { say "1"; } # "?[4..9]:**" + when .substr(1,1) eq "?" && .substr(0,1) < 2 { say "9"; } # "[0..1]?:**" + when .substr(1,1) eq "?" { say "3"; } # "2?:**" + when .substr(3,1) eq "?" { say "5"; } # "**:?*" + when .substr(4,1) eq "?" { say "9"; } # "**:*?" +} diff --git a/challenge-194/arne-sommer/raku/frequency-equalizer b/challenge-194/arne-sommer/raku/frequency-equalizer new file mode 100755 index 0000000000..465e52bf81 --- /dev/null +++ b/challenge-194/arne-sommer/raku/frequency-equalizer @@ -0,0 +1,15 @@ +#! /usr/bin/env raku + +subset az where /^<[a..z]>+$/; + +unit sub MAIN (az $s, :v(:$verbose)); + +my @freq = $s.comb.Bag.values.sort; + +say ": Frequency sorted: @freq[]" if $verbose; + +@freq.push(@freq.pop - 1); + +say ": Frequency lowered: @freq[]" if $verbose; + +say ( [==] @freq ) ?? 1 !! 0; -- cgit