aboutsummaryrefslogtreecommitdiff
path: root/challenge-151/abigail/bash
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.freedom.nl>2022-02-08 11:51:15 +0100
committerAbigail <abigail@abigail.freedom.nl>2022-02-08 11:51:15 +0100
commit5045026f0fe4bf7ba93d00350f8bb6bbde68f5be (patch)
tree0964d86a154ce7fdd4bcdaccdadd955ddc9e6c99 /challenge-151/abigail/bash
parentdfe3d0c53a5e090bb2784fb9487463656fa72387 (diff)
downloadperlweeklychallenge-club-5045026f0fe4bf7ba93d00350f8bb6bbde68f5be.tar.gz
perlweeklychallenge-club-5045026f0fe4bf7ba93d00350f8bb6bbde68f5be.tar.bz2
perlweeklychallenge-club-5045026f0fe4bf7ba93d00350f8bb6bbde68f5be.zip
Week 151: Simplified algorithm for part 2.
By adding two dummy 0's to the "best" array, and not bothering the calculate the best values for the first two houses, we don't have a case study inside the main loop.
Diffstat (limited to 'challenge-151/abigail/bash')
-rw-r--r--challenge-151/abigail/bash/ch-2.sh34
1 files changed, 7 insertions, 27 deletions
diff --git a/challenge-151/abigail/bash/ch-2.sh b/challenge-151/abigail/bash/ch-2.sh
index 0b8f213fca..6a9eceec29 100644
--- a/challenge-151/abigail/bash/ch-2.sh
+++ b/challenge-151/abigail/bash/ch-2.sh
@@ -13,34 +13,14 @@ set -f
declare -a best
while read -a houses
-do if [[ ${#houses[@]} -lt 2 ]]
- then echo ${houses[0]}
- continue
- fi
-
- size=${#houses[@]}
- for ((i = size - 1; i >= 0; i --))
- do ((i1 = i + 1))
- ((i2 = i + 2))
- if ((i == size - 1))
- then best[$i]=${houses[$i]}
- continue
- fi
-
- if ((i == 0))
- then best[$i]=$((${houses[$i]} + ${best[$i2]}))
- continue
- fi
-
- if ((i == size - 2))
- then val1=${houses[$i]}
- val2=${best[$i1]}
- else val1=$((${houses[$i]} + ${best[$i2]}))
- val2=${best[$i1]}
- fi
-
+do size=${#houses[@]}
+ best[$((size + 0))]=0
+ best[$((size + 1))]=0
+ for ((i = size - 1; i >= 2; i --))
+ do ((val1 = ${houses[$i]} + ${best[$((i + 2))]}))
+ ((val2 = ${best[$((i + 1))]}))
best[$i]=$((val1 < val2 ? val2 : val1))
done
- echo ${best[0]}
+ echo $((${houses[0]} + ${best[2]}))
done