aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-194/wambash/raku/ch-1.raku28
-rw-r--r--challenge-194/wambash/raku/ch-2.raku23
2 files changed, 51 insertions, 0 deletions
diff --git a/challenge-194/wambash/raku/ch-1.raku b/challenge-194/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..ee77b8b4ad
--- /dev/null
+++ b/challenge-194/wambash/raku/ch-1.raku
@@ -0,0 +1,28 @@
+#!/usr/bin/env raku
+
+sub is-valid-time ($s) {
+ my ($hour,$minute) = $s.split: ':';
+ so try DateTime.now.clone: :$hour, :$minute
+}
+
+sub digital-clock ($s) {
+ 9...0
+ andthen .first: {
+ is-valid-time $s.trans: '?' => "$_"
+ }
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is digital-clock('?5:00'),1;
+ is digital-clock('?3:00'),2;
+ is digital-clock('1?:00'),9;
+ is digital-clock('2?:00'),3;
+ is digital-clock('12:?5'),5;
+ is digital-clock('12:59'),9;
+ done-testing;
+}
+
+multi MAIN ($s) {
+ say digital-clock $s
+}
diff --git a/challenge-194/wambash/raku/ch-2.raku b/challenge-194/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..a30a8128a6
--- /dev/null
+++ b/challenge-194/wambash/raku/ch-2.raku
@@ -0,0 +1,23 @@
+#!/usr/bin/env raku
+
+sub frequency-equalizer ($s) {
+ $s
+ andthen .comb
+ andthen .Bag
+ andthen all .values.minmax == 2, .maxpairs == 1
+ andthen .so
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is frequency-equalizer('abbc'), True;
+ is frequency-equalizer('xyzyyxz'), True;
+ is frequency-equalizer('xzxz'), False;
+ is frequency-equalizer('aabbcccddd'), False;
+ is frequency-equalizer('aabbccccdd'), False;
+ done-testing;
+}
+
+multi MAIN ($s) {
+ say +frequency-equalizer $s
+}