From 9af03c6853b679b6cbb724e313f76c0b4e62df66 Mon Sep 17 00:00:00 2001 From: Mark A Date: Mon, 10 May 2021 03:58:53 -0600 Subject: Challenge 112 Solutions (Raku) --- challenge-112/mark-anderson/raku/ch-1.raku | 10 +++ challenge-112/mark-anderson/raku/ch-2.raku | 137 +++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 challenge-112/mark-anderson/raku/ch-1.raku create mode 100644 challenge-112/mark-anderson/raku/ch-2.raku 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 +} -- cgit