aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-05-16 18:29:59 +0100
committerGitHub <noreply@github.com>2021-05-16 18:29:59 +0100
commit3f9ba847e996adfd0640a41d9ad081659131c2b3 (patch)
tree6a2ebeb8ea59a5e25411c6fb1b170261c7a2b05b
parent45c8bffb1a53e712241e7720130b74787d62f1f6 (diff)
parent3e950d79280a1c25de12a7d51e157d678903d991 (diff)
downloadperlweeklychallenge-club-3f9ba847e996adfd0640a41d9ad081659131c2b3.tar.gz
perlweeklychallenge-club-3f9ba847e996adfd0640a41d9ad081659131c2b3.tar.bz2
perlweeklychallenge-club-3f9ba847e996adfd0640a41d9ad081659131c2b3.zip
Merge pull request #4081 from wambash/challenge-week-112
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;
+}