aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark A <andemark@a-iot1t.uch.ad.pvt>2021-03-02 11:55:32 -0700
committerMark A <andemark@a-iot1t.uch.ad.pvt>2021-03-02 11:55:32 -0700
commitd8ece6f5076e1f5ecc712318472040fc37280c05 (patch)
tree8d09cb622292871ee65434426c075e85b652871a
parentbeb85731c96259b8a964daa71e9ec5eb7e6a047d (diff)
downloadperlweeklychallenge-club-d8ece6f5076e1f5ecc712318472040fc37280c05.tar.gz
perlweeklychallenge-club-d8ece6f5076e1f5ecc712318472040fc37280c05.tar.bz2
perlweeklychallenge-club-d8ece6f5076e1f5ecc712318472040fc37280c05.zip
ch-2.raku
-rw-r--r--challenge-102/mark-anderson/raku/ch-2.raku59
1 files changed, 59 insertions, 0 deletions
diff --git a/challenge-102/mark-anderson/raku/ch-2.raku b/challenge-102/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..9e499c12bd
--- /dev/null
+++ b/challenge-102/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,59 @@
+#!/usr/bin/env raku
+
+use experimental :cached;
+use Test;
+plan 21;
+
+my @results = <
+#
+2#
+#3#
+2#4#
+#3#5#
+2#4#6#
+#3#5#7#
+2#4#6#8#
+#3#5#7#9#
+#3#5#7#10#
+2#4#6#8#11#
+#3#5#7#9#12#
+#3#5#7#10#13#
+2#4#6#8#11#14#
+#3#5#7#9#12#15#
+#3#5#7#10#13#16#
+2#4#6#8#11#14#17#
+#3#5#7#9#12#15#18#
+#3#5#7#10#13#16#19#
+2#4#6#8#11#14#17#20#
+#3#5#7#9#12#15#18#21#
+>;
+
+for 1..21 {
+ is hash-string($_), @results[$_-1];
+}
+
+sub hash-string(UInt $n where $n > 0) is cached
+{
+ given $n {
+ when 1
+ {
+ "#";
+ }
+
+ when 2
+ {
+ "2#";
+ }
+
+ when 3
+ {
+ "#3#";
+ }
+
+ default
+ {
+ my $next = $n - $n.chars - 1;
+ hash-string($next) ~ $n ~ "#";
+ }
+ }
+}