aboutsummaryrefslogtreecommitdiff
path: root/challenge-112
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-05-17 02:48:19 +0100
committerGitHub <noreply@github.com>2021-05-17 02:48:19 +0100
commit152535b216770c2151c8512667f93da700d927ae (patch)
treedfeb6c448915f2b66c2cfe0b370836d3cc93e52c /challenge-112
parent5fc03a7dc24b1a2131076c730654adcc4715c918 (diff)
parentcefe1ba8bcd8bbafa5c2ddf2b242e6f2aa6ecc20 (diff)
downloadperlweeklychallenge-club-152535b216770c2151c8512667f93da700d927ae.tar.gz
perlweeklychallenge-club-152535b216770c2151c8512667f93da700d927ae.tar.bz2
perlweeklychallenge-club-152535b216770c2151c8512667f93da700d927ae.zip
Merge pull request #4094 from jaldhar/challenge-112
Challenge 112 by Jaldhar H. Vyas
Diffstat (limited to 'challenge-112')
-rw-r--r--challenge-112/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-112/jaldhar-h-vyas/perl/ch-1.pl26
-rwxr-xr-xchallenge-112/jaldhar-h-vyas/perl/ch-2.pl16
-rwxr-xr-xchallenge-112/jaldhar-h-vyas/raku/ch-1.raku25
-rwxr-xr-xchallenge-112/jaldhar-h-vyas/raku/ch-2.sh3
5 files changed, 71 insertions, 0 deletions
diff --git a/challenge-112/jaldhar-h-vyas/blog.txt b/challenge-112/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..fb67f6aa84
--- /dev/null
+++ b/challenge-112/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2021/05/perl_weekly_challenge_week_112.html
diff --git a/challenge-112/jaldhar-h-vyas/perl/ch-1.pl b/challenge-112/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..879233623b
--- /dev/null
+++ b/challenge-112/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,26 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+my $path = shift // die "Must specify a path.";
+
+$path =~ s{ /+ } {/}gmsx;
+$path =~ s{ / \z } {}msx;
+
+my @dirs = split m{/}, $path;
+
+for my $i (0 .. scalar @dirs - 1) {
+ if ($dirs[$i] eq q{..}) {
+ my $j = $i - 1;
+ while ($j != 0 && $dirs[$j] eq q{}) {
+ $j--;
+ }
+ $dirs[$j] = q{};
+ $dirs[$i] = q{.};
+ }
+ if ($dirs[$i] eq q{.}) {
+ $dirs[$i] = q{};
+ }
+}
+
+say q{/} . (join q{/}, grep { $_ } @dirs); \ No newline at end of file
diff --git a/challenge-112/jaldhar-h-vyas/perl/ch-2.pl b/challenge-112/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..71aba5b58e
--- /dev/null
+++ b/challenge-112/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+sub fibonacci {
+ my ($n) = @_;
+
+ if ($n <= 1) {
+ return $n;
+ }
+ return fibonacci($n - 1) + fibonacci($n - 2);
+}
+
+my $stairs = shift // die "Must specify number of stairs to climb.\n";
+
+say fibonacci($stairs + 1);
diff --git a/challenge-112/jaldhar-h-vyas/raku/ch-1.raku b/challenge-112/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..85a610975e
--- /dev/null
+++ b/challenge-112/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,25 @@
+#!/usr/bin/raku
+
+sub MAIN(Str $p) {
+
+ my $path = $p.subst(/ \/+ /, q{/}, :g).subst(/ \/ $ /, q{});
+
+ my @dirs = $path.split(q{/});
+
+ for 0 ..^ @dirs.elems -> $i {
+ if @dirs[$i] eq q{..} {
+ my $j = $i - 1;
+ while $j != 0 && @dirs[$j] eq q{} {
+ $j--;
+ }
+ @dirs[$j] = q{};
+ @dirs[$i] = q{.};
+ }
+
+ if @dirs[$i] eq q{.} {
+ @dirs[$i] = q{};
+ }
+ }
+
+ say q{/}, @dirs.grep({ $_}).join(q{/});
+} \ No newline at end of file
diff --git a/challenge-112/jaldhar-h-vyas/raku/ch-2.sh b/challenge-112/jaldhar-h-vyas/raku/ch-2.sh
new file mode 100755
index 0000000000..f06aa56380
--- /dev/null
+++ b/challenge-112/jaldhar-h-vyas/raku/ch-2.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+raku -e '(0, 1, -> $a, $b { $a + $b } ... *)[@*ARGS[0] + 1].say;' $@ \ No newline at end of file