aboutsummaryrefslogtreecommitdiff
path: root/challenge-112/mark-anderson
diff options
context:
space:
mode:
authorMark A <andemark@a-iot1t.uch.ad.pvt>2021-05-10 03:58:53 -0600
committerMark A <andemark@a-iot1t.uch.ad.pvt>2021-05-10 03:58:53 -0600
commit9af03c6853b679b6cbb724e313f76c0b4e62df66 (patch)
tree037b1ba3a1a500488392969de8f9ef0d812f617f /challenge-112/mark-anderson
parent7c3e4b829100a613a3dc05c4a378c351f2bfcced (diff)
downloadperlweeklychallenge-club-9af03c6853b679b6cbb724e313f76c0b4e62df66.tar.gz
perlweeklychallenge-club-9af03c6853b679b6cbb724e313f76c0b4e62df66.tar.bz2
perlweeklychallenge-club-9af03c6853b679b6cbb724e313f76c0b4e62df66.zip
Challenge 112 Solutions (Raku)
Diffstat (limited to 'challenge-112/mark-anderson')
-rw-r--r--challenge-112/mark-anderson/raku/ch-1.raku10
-rw-r--r--challenge-112/mark-anderson/raku/ch-2.raku137
2 files changed, 147 insertions, 0 deletions
diff --git a/challenge-112/mark-anderson/raku/ch-1.raku b/challenge-112/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..9e7a0b29ef
--- /dev/null
+++ b/challenge-112/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,10 @@
+#!/usr/bin/env raku
+
+use Test;
+plan 3;
+
+is IO::Spec::Unix.canonpath("/a/"), "/a";
+
+is IO::Spec::Unix.canonpath("/a/b//c/"), "/a/b/c";
+
+is IO::Spec::Unix.canonpath("/a/b/c/../..", :parent), "/a";
diff --git a/challenge-112/mark-anderson/raku/ch-2.raku b/challenge-112/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..5f381b8fba
--- /dev/null
+++ b/challenge-112/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,137 @@
+#!/usr/bin/env raku
+
+multi MAIN
+{
+ use Test;
+ plan 6;
+
+ is stairs(3).elems, 3;
+
+ is stairs(4).elems, 5;
+
+ is stairs(10).elems, 89;
+
+ is-deeply stairs(3), ((1, 1, 1),
+ (1, 2),
+ (2, 1))>>.Seq;
+
+ is-deeply stairs(4), ((1, 1, 1, 1),
+ (1, 1, 2),
+ (1, 2, 1),
+ (2, 1, 1),
+ (2, 2))>>.Seq;
+
+ is-deeply stairs(10), ((1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
+ (1, 1, 1, 1, 1, 1, 1, 1, 2),
+ (1, 1, 1, 1, 1, 1, 1, 2, 1),
+ (1, 1, 1, 1, 1, 1, 2, 1, 1),
+ (1, 1, 1, 1, 1, 1, 2, 2),
+ (1, 1, 1, 1, 1, 2, 1, 1, 1),
+ (1, 1, 1, 1, 1, 2, 1, 2),
+ (1, 1, 1, 1, 1, 2, 2, 1),
+ (1, 1, 1, 1, 2, 1, 1, 1, 1),
+ (1, 1, 1, 1, 2, 1, 1, 2),
+ (1, 1, 1, 1, 2, 1, 2, 1),
+ (1, 1, 1, 1, 2, 2, 1, 1),
+ (1, 1, 1, 1, 2, 2, 2),
+ (1, 1, 1, 2, 1, 1, 1, 1, 1),
+ (1, 1, 1, 2, 1, 1, 1, 2),
+ (1, 1, 1, 2, 1, 1, 2, 1),
+ (1, 1, 1, 2, 1, 2, 1, 1),
+ (1, 1, 1, 2, 1, 2, 2),
+ (1, 1, 1, 2, 2, 1, 1, 1),
+ (1, 1, 1, 2, 2, 1, 2),
+ (1, 1, 1, 2, 2, 2, 1),
+ (1, 1, 2, 1, 1, 1, 1, 1, 1),
+ (1, 1, 2, 1, 1, 1, 1, 2),
+ (1, 1, 2, 1, 1, 1, 2, 1),
+ (1, 1, 2, 1, 1, 2, 1, 1),
+ (1, 1, 2, 1, 1, 2, 2),
+ (1, 1, 2, 1, 2, 1, 1, 1),
+ (1, 1, 2, 1, 2, 1, 2),
+ (1, 1, 2, 1, 2, 2, 1),
+ (1, 1, 2, 2, 1, 1, 1, 1),
+ (1, 1, 2, 2, 1, 1, 2),
+ (1, 1, 2, 2, 1, 2, 1),
+ (1, 1, 2, 2, 2, 1, 1),
+ (1, 1, 2, 2, 2, 2),
+ (1, 2, 1, 1, 1, 1, 1, 1, 1),
+ (1, 2, 1, 1, 1, 1, 1, 2),
+ (1, 2, 1, 1, 1, 1, 2, 1),
+ (1, 2, 1, 1, 1, 2, 1, 1),
+ (1, 2, 1, 1, 1, 2, 2),
+ (1, 2, 1, 1, 2, 1, 1, 1),
+ (1, 2, 1, 1, 2, 1, 2),
+ (1, 2, 1, 1, 2, 2, 1),
+ (1, 2, 1, 2, 1, 1, 1, 1),
+ (1, 2, 1, 2, 1, 1, 2),
+ (1, 2, 1, 2, 1, 2, 1),
+ (1, 2, 1, 2, 2, 1, 1),
+ (1, 2, 1, 2, 2, 2),
+ (1, 2, 2, 1, 1, 1, 1, 1),
+ (1, 2, 2, 1, 1, 1, 2),
+ (1, 2, 2, 1, 1, 2, 1),
+ (1, 2, 2, 1, 2, 1, 1),
+ (1, 2, 2, 1, 2, 2),
+ (1, 2, 2, 2, 1, 1, 1),
+ (1, 2, 2, 2, 1, 2),
+ (1, 2, 2, 2, 2, 1),
+ (2, 1, 1, 1, 1, 1, 1, 1, 1),
+ (2, 1, 1, 1, 1, 1, 1, 2),
+ (2, 1, 1, 1, 1, 1, 2, 1),
+ (2, 1, 1, 1, 1, 2, 1, 1),
+ (2, 1, 1, 1, 1, 2, 2),
+ (2, 1, 1, 1, 2, 1, 1, 1),
+ (2, 1, 1, 1, 2, 1, 2),
+ (2, 1, 1, 1, 2, 2, 1),
+ (2, 1, 1, 2, 1, 1, 1, 1),
+ (2, 1, 1, 2, 1, 1, 2),
+ (2, 1, 1, 2, 1, 2, 1),
+ (2, 1, 1, 2, 2, 1, 1),
+ (2, 1, 1, 2, 2, 2),
+ (2, 1, 2, 1, 1, 1, 1, 1),
+ (2, 1, 2, 1, 1, 1, 2),
+ (2, 1, 2, 1, 1, 2, 1),
+ (2, 1, 2, 1, 2, 1, 1),
+ (2, 1, 2, 1, 2, 2),
+ (2, 1, 2, 2, 1, 1, 1),
+ (2, 1, 2, 2, 1, 2),
+ (2, 1, 2, 2, 2, 1),
+ (2, 2, 1, 1, 1, 1, 1, 1),
+ (2, 2, 1, 1, 1, 1, 2),
+ (2, 2, 1, 1, 1, 2, 1),
+ (2, 2, 1, 1, 2, 1, 1),
+ (2, 2, 1, 1, 2, 2),
+ (2, 2, 1, 2, 1, 1, 1),
+ (2, 2, 1, 2, 1, 2),
+ (2, 2, 1, 2, 2, 1),
+ (2, 2, 2, 1, 1, 1, 1),
+ (2, 2, 2, 1, 1, 2),
+ (2, 2, 2, 1, 2, 1),
+ (2, 2, 2, 2, 1, 1),
+ (2, 2, 2, 2, 2))>>.Seq;
+}
+
+multi MAIN(UInt $u)
+{
+ my $seq := stairs($u);
+
+ say $seq.elems;
+
+ .say for $seq;
+}
+
+sub stairs($u)
+{
+ my $head = ('100' x $u).substr(0, $u).parse-base(2);
+ my $tail = ('110' x $u).substr(0, $u).parse-base(2);
+
+ ($head..$tail).map({
+ my $b = .base(2);
+
+ unless $b ~~ /000||111/
+ {
+ $b.comb(/(.)$0?/).map(*.chars)
+ }
+ }).sort
+}