aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-107/wambash/raku/ch-1.raku16
-rw-r--r--challenge-107/wambash/raku/ch-2.raku27
2 files changed, 43 insertions, 0 deletions
diff --git a/challenge-107/wambash/raku/ch-1.raku b/challenge-107/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..ea0647bd0f
--- /dev/null
+++ b/challenge-107/wambash/raku/ch-1.raku
@@ -0,0 +1,16 @@
+sub self-descriptive-numbers () {
+ 1..*
+ andthen .map: { slip 0 x $_ .. $_-2 x $_ }\
+ andthen .grep: {.comb eq .comb.Bag{ (^.chars)ยป.Str } }\
+ andthen .head(3)
+}
+
+multi MAIN () {
+ .say for self-descriptive-numbers
+}
+
+multi MAIN (Bool :$test!) {
+ use Test;
+ is self-descriptive-numbers(), (1210, 2020, 21200);
+ done-testing;
+}
diff --git a/challenge-107/wambash/raku/ch-2.raku b/challenge-107/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..58728c1656
--- /dev/null
+++ b/challenge-107/wambash/raku/ch-2.raku
@@ -0,0 +1,27 @@
+#!/usr/bin/env raku
+
+sub list-methods ( ::T ) {
+ T.^methods.map: *.name
+}
+
+sub MAIN (Bool :$test!) {
+ use Test;
+
+ my $class = class :: {
+ method new {}
+ method add {}
+ method mul {}
+ method div {}
+ }
+
+ my $role = role :: {
+ method new {...}
+ method add {...}
+ method mul {...}
+ method div {...}
+ }
+
+ is list-methods($class), <new add mul div BUILDALL>;
+ is list-methods($role ), <new add mul div>;
+ done-testing;
+}