diff options
| -rw-r--r-- | challenge-112/wambash/raku/ch-1.raku | 26 | ||||
| -rw-r--r-- | challenge-112/wambash/raku/ch-2.raku | 17 |
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; +} |
