From ea5d349d51ce09985b5c59e346ea6da3bdc37562 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 10 May 2021 13:05:07 +0200 Subject: AWK solutions for week 112 --- challenge-112/abigail/awk/ch-1.awk | 44 ++++++++++++++++++++++++++++++++++++++ challenge-112/abigail/awk/ch-2.awk | 25 ++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 challenge-112/abigail/awk/ch-1.awk create mode 100644 challenge-112/abigail/awk/ch-2.awk (limited to 'challenge-112/abigail/awk') 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) +} -- cgit From d498fd3ea3e1df8c647b83e5e4922e6af971960b Mon Sep 17 00:00:00 2001 From: Abigail Date: Tue, 11 May 2021 19:29:08 +0200 Subject: Use closed form to calculate Fibonacci numbers for week 112, part 2. --- challenge-112/abigail/awk/ch-2.awk | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) (limited to 'challenge-112/abigail/awk') diff --git a/challenge-112/abigail/awk/ch-2.awk b/challenge-112/abigail/awk/ch-2.awk index 5053d8467a..57f4b8cc6f 100644 --- a/challenge-112/abigail/awk/ch-2.awk +++ b/challenge-112/abigail/awk/ch-2.awk @@ -9,17 +9,10 @@ # 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] + SQRT5 = sqrt (5) + PHI = (1 + SQRT5) / 2 } { - print fib($1) + print int (0.5 + PHI ^ ($1 + 1) / SQRT5) } -- cgit From f207da5e6d9b853a9dfe6412764e74760c6e962c Mon Sep 17 00:00:00 2001 From: Abigail Date: Sun, 16 May 2021 18:19:56 +0200 Subject: Add whitespace --- challenge-112/abigail/awk/ch-1.awk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'challenge-112/abigail/awk') 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 } { -- cgit