diff --git a/2022/RESULTS.txt b/2022/RESULTS.txt index b61aa78..34d5852 100644 --- a/2022/RESULTS.txt +++ b/2022/RESULTS.txt @@ -63,3 +63,17 @@ aoc.bash: res=2760 aoc-c: res=2760 time: 0:00.00 real, 0.00 user, 0.00 sys 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 diff --git a/2022/day04/README.org b/2022/day04/README.org index 27b7c65..075b670 100644 --- a/2022/day04/README.org +++ b/2022/day04/README.org @@ -67,8 +67,6 @@ pairs. Your puzzle answer was =444=. -The first half of this puzzle is complete! It provides one gold star: * - ** --- Part Two --- 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 @@ -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?/ -Answer: +Your puzzle answer was =801=. + +Both parts of this puzzle are complete! They provide two gold stars: ** diff --git a/2022/day04/aoc.bash b/2022/day04/aoc.bash index d2f5bc2..c919167 100755 --- a/2022/day04/aoc.bash +++ b/2022/day04/aoc.bash @@ -22,11 +22,9 @@ parse() { while IFS=-, read -ra _arr; do # arrange the two sections so that the lowest is the first - printf "_arr=%s\n" "${_arr[*]}" if ((_arr[0] > _arr[2])); then ((_tmp=_arr[0], _arr[0]=_arr[2], _arr[2]=_tmp)) ((_tmp=_arr[1], _arr[1]=_arr[3], _arr[3]=_tmp)) - printf "\t->%s\n" "${_arr[*]}" fi sections+=("${_arr[*]}") done @@ -45,6 +43,17 @@ part1() { 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() { if (($1 == 1)); then part1