diff options
| author | Abigail <abigail@abigail.be> | 2021-05-10 13:05:07 +0200 |
|---|---|---|
| committer | Abigail <abigail@abigail.be> | 2021-05-10 13:05:07 +0200 |
| commit | ea5d349d51ce09985b5c59e346ea6da3bdc37562 (patch) | |
| tree | b34e7258280cafb2d26c88b50e3fafea1f9f3701 | |
| parent | 354e9f2bd924a07b9c8b5ab0ff57aadad6f147ab (diff) | |
| download | perlweeklychallenge-club-ea5d349d51ce09985b5c59e346ea6da3bdc37562.tar.gz perlweeklychallenge-club-ea5d349d51ce09985b5c59e346ea6da3bdc37562.tar.bz2 perlweeklychallenge-club-ea5d349d51ce09985b5c59e346ea6da3bdc37562.zip | |
AWK solutions for week 112
| -rw-r--r-- | challenge-112/abigail/README.md | 2 | ||||
| -rw-r--r-- | challenge-112/abigail/awk/ch-1.awk | 44 | ||||
| -rw-r--r-- | challenge-112/abigail/awk/ch-2.awk | 25 |
3 files changed, 71 insertions, 0 deletions
diff --git a/challenge-112/abigail/README.md b/challenge-112/abigail/README.md index 1048c5465e..dbd9121743 100644 --- a/challenge-112/abigail/README.md +++ b/challenge-112/abigail/README.md @@ -33,6 +33,7 @@ Output: "/a" ~~~~ ### Solutions +* [AWK](awk/ch-1.awk) * [Perl](perl/ch-1.pl) ### Blog @@ -49,6 +50,7 @@ This is just finding the `$n + 1` Fibonacci number. ### Solutions +* [AWK](awk/ch-2.awk) * [Perl](perl/ch-2.pl) ### Blog diff --git a/challenge-112/abigail/awk/ch-1.awk b/challenge-112/abigail/awk/ch-1.awk new file mode 100644 index 0000000000..5de385b451 --- /dev/null +++ b/challenge-112/abigail/awk/ch-1.awk @@ -0,0 +1,44 @@ +#!/usr/bin/awk + +# +# See ../README.md +# + +# +# Run as: awk -f ch-1.awk < input-file +# + +BEGIN { + FS="/" # So we split into directory parts +} + +{ + delete path + j = 0 # Tracks the number of parts in + # the canonical part. + for (i = 1; i <= NF; i ++) { # Loop over directory parts + if ($i == "") { # Skip empty parts + continue; + } + if ($i == ".") { # Skip current directory + continue; + } + if ($i == "..") { # Back up to parent directory + if (j > 0) { + j -- + } + continue; + } + path [j] = $i # Copy + j ++ + } + if (j == 0) { # Root directory + print "/" + } + else { # Print parts, preceeded by a / + for (k = 0; k < j; k ++) { + printf "/%s", path [k] + } + print "" + } +} diff --git a/challenge-112/abigail/awk/ch-2.awk b/challenge-112/abigail/awk/ch-2.awk new file mode 100644 index 0000000000..5053d8467a --- /dev/null +++ b/challenge-112/abigail/awk/ch-2.awk @@ -0,0 +1,25 @@ +#!/usr/bin/awk + +# +# See ../README.md +# + +# +# Run as: awk -f ch-2.awk < input-file +# + +BEGIN { + cache [0] = 1 + cache [1] = 1 +} + +function fib (n) { + if (!(n in cache)) { + cache [n] = fib(n - 1) + fib(n - 2) + } + return cache [n] +} + +{ + print fib($1) +} |
