aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-12-11 23:21:02 +0000
committerGitHub <noreply@github.com>2022-12-11 23:21:02 +0000
commit0fdb42c6cb42634c7fd87eac2f63b1874893c5db (patch)
tree3576f6d8969f753d898d4a1496f07b395d5011fc
parent5a16c06bc68432b5fdb366d4dcc69529cd425ee0 (diff)
parent08127c996ba47c23231a9ccd6c4966dbae03d666 (diff)
downloadperlweeklychallenge-club-0fdb42c6cb42634c7fd87eac2f63b1874893c5db.tar.gz
perlweeklychallenge-club-0fdb42c6cb42634c7fd87eac2f63b1874893c5db.tar.bz2
perlweeklychallenge-club-0fdb42c6cb42634c7fd87eac2f63b1874893c5db.zip
Merge pull request #7240 from arnesom/branch-for-challenge-194
Arne Sommer
-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;