Bash: 2022 day 4 part 2
This commit is contained in:
@@ -63,3 +63,17 @@ aoc.bash: res=2760
|
|||||||
aoc-c: res=2760
|
aoc-c: res=2760
|
||||||
time: 0:00.00 real, 0.00 user, 0.00 sys
|
time: 0:00.00 real, 0.00 user, 0.00 sys
|
||||||
context-switch: 0+1, page-faults: 0+88
|
context-switch: 0+1, page-faults: 0+88
|
||||||
|
|
||||||
|
=========================================
|
||||||
|
================= day04 =================
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
+++++++++++++++++ part 1
|
||||||
|
aoc.bash: res=444
|
||||||
|
time: 0:00.04 real, 0.04 user, 0.00 sys
|
||||||
|
context-switch: 5+1, page-faults: 0+338
|
||||||
|
|
||||||
|
+++++++++++++++++ part 2
|
||||||
|
aoc.bash: res=801
|
||||||
|
time: 0:00.04 real, 0.03 user, 0.00 sys
|
||||||
|
context-switch: 0+1, page-faults: 0+336
|
||||||
|
@@ -67,8 +67,6 @@ pairs.
|
|||||||
|
|
||||||
Your puzzle answer was =444=.
|
Your puzzle answer was =444=.
|
||||||
|
|
||||||
The first half of this puzzle is complete! It provides one gold star: *
|
|
||||||
|
|
||||||
** --- Part Two ---
|
** --- Part Two ---
|
||||||
It seems like there is still quite a bit of duplicate work planned.
|
It seems like there is still quite a bit of duplicate work planned.
|
||||||
Instead, the Elves would like to know the number of pairs that /overlap
|
Instead, the Elves would like to know the number of pairs that /overlap
|
||||||
@@ -87,4 +85,6 @@ So, in this example, the number of overlapping assignment pairs is =4=.
|
|||||||
|
|
||||||
/In how many assignment pairs do the ranges overlap?/
|
/In how many assignment pairs do the ranges overlap?/
|
||||||
|
|
||||||
Answer:
|
Your puzzle answer was =801=.
|
||||||
|
|
||||||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
||||||
|
@@ -22,11 +22,9 @@ parse() {
|
|||||||
|
|
||||||
while IFS=-, read -ra _arr; do
|
while IFS=-, read -ra _arr; do
|
||||||
# arrange the two sections so that the lowest is the first
|
# arrange the two sections so that the lowest is the first
|
||||||
printf "_arr=%s\n" "${_arr[*]}"
|
|
||||||
if ((_arr[0] > _arr[2])); then
|
if ((_arr[0] > _arr[2])); then
|
||||||
((_tmp=_arr[0], _arr[0]=_arr[2], _arr[2]=_tmp))
|
((_tmp=_arr[0], _arr[0]=_arr[2], _arr[2]=_tmp))
|
||||||
((_tmp=_arr[1], _arr[1]=_arr[3], _arr[3]=_tmp))
|
((_tmp=_arr[1], _arr[1]=_arr[3], _arr[3]=_tmp))
|
||||||
printf "\t->%s\n" "${_arr[*]}"
|
|
||||||
fi
|
fi
|
||||||
sections+=("${_arr[*]}")
|
sections+=("${_arr[*]}")
|
||||||
done
|
done
|
||||||
@@ -45,6 +43,17 @@ part1() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
part2() {
|
||||||
|
declare -ig res=0
|
||||||
|
local -a _sect
|
||||||
|
|
||||||
|
for line in "${sections[@]}"; do
|
||||||
|
# shellcheck disable=SC2206
|
||||||
|
_sect=($line)
|
||||||
|
(( _sect[2] <= _sect[1] )) && (( res++ ))
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
solve() {
|
solve() {
|
||||||
if (($1 == 1)); then
|
if (($1 == 1)); then
|
||||||
part1
|
part1
|
||||||
|
Reference in New Issue
Block a user