aboutsummaryrefslogtreecommitdiff
path: root/challenge-151/abigail/awk
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.freedom.nl>2022-02-07 18:10:56 +0100
committerAbigail <abigail@abigail.freedom.nl>2022-02-07 18:10:56 +0100
commit98a74265eb245f20dcc038edfca401e67d6cfd4b (patch)
tree890f2d702adc31be5fd002c8ea9862d26b27bd14 /challenge-151/abigail/awk
parent1a21a2b719818bb32eaa46d14d91379edc7836ce (diff)
downloadperlweeklychallenge-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.awk26
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]
}
+