From 98a74265eb245f20dcc038edfca401e67d6cfd4b Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 7 Feb 2022 18:10:56 +0100 Subject: Week 151: No recursion for part 2 --- challenge-151/abigail/awk/ch-2.awk | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'challenge-151/abigail/awk') diff --git a/challenge-151/abigail/awk/ch-2.awk b/challenge-151/abigail/awk/ch-2.awk index 3eb76a8e05..73d9b19812 100644 --- a/challenge-151/abigail/awk/ch-2.awk +++ b/challenge-151/abigail/awk/ch-2.awk @@ -8,21 +8,19 @@ # Run as: awk -f ch-2.awk < input-file # -function best (i, max, sum, k) { - if (!(i in cache)) { - max = 0 - for (k = i + 2; k <= NF; k ++) { - sum = best(k) - if (sum > max) { - max = sum - } - } - cache [i] = $i + max - } - return cache [i] +function max (a, b) { + return a < b ? b : a } { - delete cache - print best(1) + delete best + for (i = NF; i > 0; i --) { + best [i] = NF <= 2 ? $i \ + : i == NF ? $i \ + : i == 1 ? $i + best [i + 2] \ + : i == NF - 1 ? max($i, best [i + 1]) \ + : max($i + best [i + 2], best [i + 1]) + } + print best [1] } + -- cgit