diff options
Diffstat (limited to 'challenge-151/abigail/awk')
| -rw-r--r-- | challenge-151/abigail/awk/ch-2.awk | 26 |
1 files changed, 12 insertions, 14 deletions
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] } + |
