diff options
| author | Abigail <abigail@abigail.freedom.nl> | 2022-02-07 18:10:56 +0100 |
|---|---|---|
| committer | Abigail <abigail@abigail.freedom.nl> | 2022-02-07 18:10:56 +0100 |
| commit | 98a74265eb245f20dcc038edfca401e67d6cfd4b (patch) | |
| tree | 890f2d702adc31be5fd002c8ea9862d26b27bd14 /challenge-151/abigail/awk | |
| parent | 1a21a2b719818bb32eaa46d14d91379edc7836ce (diff) | |
| download | perlweeklychallenge-club-98a74265eb245f20dcc038edfca401e67d6cfd4b.tar.gz perlweeklychallenge-club-98a74265eb245f20dcc038edfca401e67d6cfd4b.tar.bz2 perlweeklychallenge-club-98a74265eb245f20dcc038edfca401e67d6cfd4b.zip | |
Week 151: No recursion for part 2
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] } + |
