diff options
| author | Abigail <abigail@abigail.freedom.nl> | 2022-02-08 11:51:15 +0100 |
|---|---|---|
| committer | Abigail <abigail@abigail.freedom.nl> | 2022-02-08 11:51:15 +0100 |
| commit | 5045026f0fe4bf7ba93d00350f8bb6bbde68f5be (patch) | |
| tree | 0964d86a154ce7fdd4bcdaccdadd955ddc9e6c99 /challenge-151/abigail/bash | |
| parent | dfe3d0c53a5e090bb2784fb9487463656fa72387 (diff) | |
| download | perlweeklychallenge-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.sh | 34 |
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 |
