aboutsummaryrefslogtreecommitdiff
path: root/challenge-112
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-05-16 18:54:58 +0100
committerGitHub <noreply@github.com>2021-05-16 18:54:58 +0100
commit069032ae5b53aae9cccbcb23f03b1fa99c682e8e (patch)
treead09d7fa0198ef0daa8b9a24d0adbb99b568a4b3 /challenge-112
parent9a58753f25dda814dbf383f5f14a8bd4f5749f20 (diff)
parentaaf1f99c4be7c95696ff9abb75b639d442e3061e (diff)
downloadperlweeklychallenge-club-069032ae5b53aae9cccbcb23f03b1fa99c682e8e.tar.gz
perlweeklychallenge-club-069032ae5b53aae9cccbcb23f03b1fa99c682e8e.tar.bz2
perlweeklychallenge-club-069032ae5b53aae9cccbcb23f03b1fa99c682e8e.zip
Merge pull request #4087 from Abigail/abigail/week-112
Abigail/week 112
Diffstat (limited to 'challenge-112')
-rw-r--r--challenge-112/abigail/README.md5
-rw-r--r--challenge-112/abigail/awk/ch-1.awk2
-rw-r--r--challenge-112/abigail/befunge-93/ch-2.bf933
-rw-r--r--challenge-112/abigail/blog.txt1
-rw-r--r--challenge-112/abigail/blog1.txt1
-rw-r--r--challenge-112/abigail/java/ch-2.java24
-rw-r--r--challenge-112/abigail/perl/ch-1.pl34
-rw-r--r--challenge-112/abigail/r/ch-2.r20
8 files changed, 68 insertions, 22 deletions
diff --git a/challenge-112/abigail/README.md b/challenge-112/abigail/README.md
index aba06c6afa..4a8667ee09 100644
--- a/challenge-112/abigail/README.md
+++ b/challenge-112/abigail/README.md
@@ -43,6 +43,7 @@ Output: "/a"
* [Ruby](ruby/ch-1.rb)
### Blog
+[Perl Weekly Challenge 112: Canonical Path](https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-112-1.html)
## [Climb Stairs](https://perlweeklychallenge.org/blog/perl-weekly-challenge-112/#TASK2)
@@ -58,14 +59,18 @@ This is just finding the `$n + 1` Fibonacci number.
### Solutions
* [AWK](awk/ch-2.awk)
* [Bash](bash/ch-2.sh)
+* [Befunge-93](befunge-93/ch-2.bf93)
* [C](c/ch-2.c)
* [Go](go/ch-2.go)
+* [Java](java/ch-2.java)
* [Lua](lua/ch-2.lua)
* [Node.js](node/ch-2.js)
* [Perl](perl/ch-2.pl)
* [Pascal](pascal/ch-2.p)
* [Python](python/ch-2.py)
+* [R](r/ch-2.r)
* [Ruby](ruby/ch-2.rb)
* [Scheme](scheme/ch-2.scm)
### Blog
+[Perl Weekly Challenge 112: Climb Stairs](https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-112-2.html)
diff --git a/challenge-112/abigail/awk/ch-1.awk b/challenge-112/abigail/awk/ch-1.awk
index 5de385b451..fde01cf5de 100644
--- a/challenge-112/abigail/awk/ch-1.awk
+++ b/challenge-112/abigail/awk/ch-1.awk
@@ -9,7 +9,7 @@
#
BEGIN {
- FS="/" # So we split into directory parts
+ FS = "/" # So we split into directory parts
}
{
diff --git a/challenge-112/abigail/befunge-93/ch-2.bf93 b/challenge-112/abigail/befunge-93/ch-2.bf93
new file mode 100644
index 0000000000..15af811bf7
--- /dev/null
+++ b/challenge-112/abigail/befunge-93/ch-2.bf93
@@ -0,0 +1,3 @@
+> & :1+!#@_ 111p112p > :!#v_ 12g:11g+12p11p :1- v
+ ^ <
+^ ,+55 .g11 <
diff --git a/challenge-112/abigail/blog.txt b/challenge-112/abigail/blog.txt
new file mode 100644
index 0000000000..18da944aa5
--- /dev/null
+++ b/challenge-112/abigail/blog.txt
@@ -0,0 +1 @@
+https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-112-1.html
diff --git a/challenge-112/abigail/blog1.txt b/challenge-112/abigail/blog1.txt
new file mode 100644
index 0000000000..ea0b25bd14
--- /dev/null
+++ b/challenge-112/abigail/blog1.txt
@@ -0,0 +1 @@
+https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-112-2.html
diff --git a/challenge-112/abigail/java/ch-2.java b/challenge-112/abigail/java/ch-2.java
new file mode 100644
index 0000000000..b1db2db642
--- /dev/null
+++ b/challenge-112/abigail/java/ch-2.java
@@ -0,0 +1,24 @@
+//
+// See ../README.md
+//
+
+//
+// Run as: ln ch-2.java ch2.java; javac ch2.java; java ch2 < input-file
+//
+
+import java.util.Scanner;
+import java.lang.Math;
+
+
+public class ch2 {
+ public static void main (String [] args) {
+ final double SQRT5 = Math . sqrt (5);
+ final double PHI = (1 + SQRT5) / 2;
+ Scanner scanner = new Scanner (System . in);
+ while (scanner . hasNextInt ()) {
+ System . out . printf ("%d\n",
+ (int) Math . round (
+ Math . pow (PHI, scanner . nextInt () + 1) / SQRT5));
+ }
+ }
+}
diff --git a/challenge-112/abigail/perl/ch-1.pl b/challenge-112/abigail/perl/ch-1.pl
index b68a966191..5d7a0157d5 100644
--- a/challenge-112/abigail/perl/ch-1.pl
+++ b/challenge-112/abigail/perl/ch-1.pl
@@ -19,25 +19,17 @@ use experimental 'lexical_subs';
while (<>) {
chomp;
-
- # Remove duplicate slashes
- s !/\K/+!!g;
-
- # Add a trailing slash; this makes it easier to deal
- # with the cases below.
- $_ .= "/";
-
- # Remove single period
- s !/\.(?=/)!!g;
-
- # Remove double period
- 1 while s !/[^/]+/\.\.(?=/)!!;
-
- # Remove any leading /../
- 1 while s !^/\.\./!/!;
-
- # Remove trailing slashes
- s !/+$!!;
-
- say $_ || '/';
+ my @parts = split /\/+/;
+ my @parts2;
+
+ foreach my $part (@parts) {
+ next if $part eq "." || $part eq "";
+ if ($part eq "..") {
+ pop @parts2;
+ next;
+ }
+ push @parts2 => $part;
+ }
+
+ say "/" . join "/" => @parts2;
}
diff --git a/challenge-112/abigail/r/ch-2.r b/challenge-112/abigail/r/ch-2.r
new file mode 100644
index 0000000000..4d1fd9db6d
--- /dev/null
+++ b/challenge-112/abigail/r/ch-2.r
@@ -0,0 +1,20 @@
+#
+# See ../README.md
+#
+
+#
+# Run as: Rscript ch-2.r < input-file
+#
+
+stdin <- file ('stdin', 'r')
+
+sqrt5 <- sqrt (5)
+phi <- (1 + sqrt5) / 2
+
+repeat {
+ n <- readLines (stdin, n = 1)
+ if (length (n) == 0) {
+ break
+ }
+ cat (round (phi ^ (as.integer (n) + 1) / sqrt5), "\n", sep = "")
+}