aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Krňávek <Jan.Krnavek@gmail.com>2021-05-16 10:42:57 +0200
committerJan Krňávek <Jan.Krnavek@gmail.com>2021-05-16 10:42:57 +0200
commit3e950d79280a1c25de12a7d51e157d678903d991 (patch)
treec9acde5c02d639fd88e30471ffabb33bbda794da
parent7f41e41927d72951f1c8e0943770ac841a50c776 (diff)
downloadperlweeklychallenge-club-3e950d79280a1c25de12a7d51e157d678903d991.tar.gz
perlweeklychallenge-club-3e950d79280a1c25de12a7d51e157d678903d991.tar.bz2
perlweeklychallenge-club-3e950d79280a1c25de12a7d51e157d678903d991.zip
solutions week 112
-rw-r--r--challenge-112/wambash/raku/ch-1.raku26
-rw-r--r--challenge-112/wambash/raku/ch-2.raku17
2 files changed, 43 insertions, 0 deletions
diff --git a/challenge-112/wambash/raku/ch-1.raku b/challenge-112/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..dc15a1b0b6
--- /dev/null
+++ b/challenge-112/wambash/raku/ch-1.raku
@@ -0,0 +1,26 @@
+#!/usr/bin/env raku
+
+sub canonical-path ( $path ) {
+ my IO::Path $clean-path = $path.IO.cleanup;
+ with $clean-path.resolve(:completely) {
+ .path
+ } orwith $clean-path.path {
+ $_, *.subst(/'/'<-[/]>*'/..'/, '') ... * eq *
+ andthen .tail || '/'
+ }
+}
+
+
+multi MAIN ($path) {
+ say canonical-path $path
+}
+
+multi MAIN (:test($)! ) {
+ use Test;
+ is canonical-path("/a/"), "/a";
+ is canonical-path("/a/b//c/"), "/a/b/c";
+ is canonical-path("/a/b/c/../.."), "/a";
+ is canonical-path('/var//./../var/../log/apache-flink/../..'), '/';
+ is canonical-path('/var//./../var/log/apache-flink/..'), '/var/log';
+ done-testing;
+}
diff --git a/challenge-112/wambash/raku/ch-2.raku b/challenge-112/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..81e8cd6460
--- /dev/null
+++ b/challenge-112/wambash/raku/ch-2.raku
@@ -0,0 +1,17 @@
+#!/usr/bin/env raku
+constant @fib = 0, 1, * + * ... *;
+
+sub climb-stairs ($n) {
+ @fib[$n+1]
+}
+
+multi MAIN ( $n ) {
+ say climb-stairs $n;
+}
+
+multi MAIN ( :test($) ) {
+ use Test;
+ is climb-stairs(3),3;
+ is climb-stairs(4),5;
+ done-testing;
+}