aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-254/wambash/raku/ch-1.raku23
-rw-r--r--challenge-254/wambash/raku/ch-2.raku24
2 files changed, 47 insertions, 0 deletions
diff --git a/challenge-254/wambash/raku/ch-1.raku b/challenge-254/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..4980c00d91
--- /dev/null
+++ b/challenge-254/wambash/raku/ch-1.raku
@@ -0,0 +1,23 @@
+#!/usr/bin/env raku
+
+sub three-power (UInt $n) {
+ 1,3,9 ... $n
+ andthen .tail // -1
+ andthen $_ == $n
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is three-power(27), True;
+ is three-power( 1), True;
+ is three-power( 0), False;
+ is three-power(12), False;
+ is three-power(3⁵⁶), True;
+ is three-power(3⁵⁶+1), False;
+ is three-power(3⁵⁶-3), False;
+ done-testing;
+}
+
+multi MAIN (UInt $n) {
+ say three-power $n
+}
diff --git a/challenge-254/wambash/raku/ch-2.raku b/challenge-254/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..4a59c6084e
--- /dev/null
+++ b/challenge-254/wambash/raku/ch-2.raku
@@ -0,0 +1,24 @@
+#!/usr/bin/env raku
+
+my regex vowels { :i <[aeiou]> }
+
+sub reverse-vowels ($s) {
+ $s
+ andthen .comb: /<vowels>/
+ andthen .reverse
+ andthen $s, |.pairs
+ andthen .reduce: -> $s, $ch { $s.subst: /<vowels>/, $ch.value, :ii, nth => $ch.key + 1 }
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is reverse-vowels('Raku'),'Ruka';
+ is reverse-vowels('Uiua'),'Auiu';
+ is reverse-vowels('Perl'),'Perl';
+ is reverse-vowels('Julia'),'Jaliu';
+ done-testing;
+}
+
+multi MAIN ($s) {
+ say reverse-vowels $s
+}