aboutsummaryrefslogtreecommitdiff
path: root/challenge-194
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2022-12-11 22:18:39 +0100
committerarnesom <arne@bbop.org>2022-12-11 22:18:39 +0100
commit08127c996ba47c23231a9ccd6c4966dbae03d666 (patch)
treef7e7b284fc3c28ba1e316091e48f7555630feff8 /challenge-194
parent5333b8bde873a3b1db76959f5b4ad7b68fa811b0 (diff)
downloadperlweeklychallenge-club-08127c996ba47c23231a9ccd6c4966dbae03d666.tar.gz
perlweeklychallenge-club-08127c996ba47c23231a9ccd6c4966dbae03d666.tar.bz2
perlweeklychallenge-club-08127c996ba47c23231a9ccd6c4966dbae03d666.zip
Arne Sommer
Diffstat (limited to 'challenge-194')
-rw-r--r--challenge-194/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-194/arne-sommer/raku/ch-1.raku17
-rwxr-xr-xchallenge-194/arne-sommer/raku/ch-2.raku15
-rwxr-xr-xchallenge-194/arne-sommer/raku/digital-clock17
-rwxr-xr-xchallenge-194/arne-sommer/raku/frequency-equalizer15
5 files changed, 65 insertions, 0 deletions
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;