diff --git a/README b/README index 935cea8..ee4e0af 100644 --- a/README +++ b/README @@ -1,4 +1,7 @@ -advent of code 2020: -https://adventofcode.com/2020 +advent of code 2020: https://adventofcode.com/2020 -Here are solutions to the 2 daily exercises in both C and bash. +My solutions to the 2 daily exercises in both C and Bash (also Cobol for day 1). + +Status: + +Done: Days 1-16: parts 1 and 2 diff --git a/day17/Makefile b/day17/Makefile index a1d3261..b472b5b 100644 --- a/day17/Makefile +++ b/day17/Makefile @@ -20,7 +20,7 @@ ex1: @#$(TIME) ex1-c 2020 < $(INPUT) 2>&1 ex2: - @$(TIME) ex2.bash < $(INPUT) 2>&1 + @#$(TIME) ex2.bash < $(INPUT) 2>&1 @#$(TIME) ex1-c 30000000 < $(INPUT) 2>&1 clean: diff --git a/day17/OUTPUT b/day17/OUTPUT new file mode 100644 index 0000000..d62d913 --- /dev/null +++ b/day17/OUTPUT @@ -0,0 +1,4 @@ +ex1.bash : res=263 + time: 1:24.06 real, 60.13 user, 30.29 sys + context-switch: 5369+166373, page-faults: 0+7362621 + diff --git a/day17/README b/day17/README index 86a4c29..9e568b6 100644 --- a/day17/README +++ b/day17/README @@ -144,7 +144,262 @@ After the full six-cycle boot process completes, 112 cubes are left in the activ Starting with your given initial configuration, simulate six cycles. How many cubes are left in the active state after the sixth cycle? -To begin, get your puzzle input. +Your puzzle answer was 263. + +The first half of this puzzle is complete! It provides one gold star: * +--- Part Two --- + +For some reason, your simulated results don't match what the experimental energy source engineers expected. Apparently, the pocket dimension actually has four spatial dimensions, not three. + +The pocket dimension contains an infinite 4-dimensional grid. At every integer 4-dimensional coordinate (x,y,z,w), there exists a single cube (really, a hypercube) which is still either active or inactive. + +Each cube only ever considers its neighbors: any of the 80 other cubes where any of their coordinates differ by at most 1. For example, given the cube at x=1,y=2,z=3,w=4, its neighbors include the cube at x=2,y=2,z=3,w=3, the cube at x=0,y=2,z=3,w=4, and so on. + +The initial state of the pocket dimension still consists of a small flat region of cubes. Furthermore, the same rules for cycle updating still apply: during each cycle, consider the number of active neighbors of each cube. + +For example, consider the same initial state as in the example above. Even though the pocket dimension is 4-dimensional, this initial state represents a small 2-dimensional slice of it. (In particular, this initial state defines a 3x3x1x1 region of the 4-dimensional space.) + +Simulating a few cycles from this initial state produces the following configurations, where the result of each cycle is shown layer-by-layer at each given z and w coordinate: + +Before any cycles: + +z=0, w=0 +.#. +..# +### + + +After 1 cycle: + +z=-1, w=-1 +#.. +..# +.#. + +z=0, w=-1 +#.. +..# +.#. + +z=1, w=-1 +#.. +..# +.#. + +z=-1, w=0 +#.. +..# +.#. + +z=0, w=0 +#.# +.## +.#. + +z=1, w=0 +#.. +..# +.#. + +z=-1, w=1 +#.. +..# +.#. + +z=0, w=1 +#.. +..# +.#. + +z=1, w=1 +#.. +..# +.#. + + +After 2 cycles: + +z=-2, w=-2 +..... +..... +..#.. +..... +..... + +z=-1, w=-2 +..... +..... +..... +..... +..... + +z=0, w=-2 +###.. +##.## +#...# +.#..# +.###. + +z=1, w=-2 +..... +..... +..... +..... +..... + +z=2, w=-2 +..... +..... +..#.. +..... +..... + +z=-2, w=-1 +..... +..... +..... +..... +..... + +z=-1, w=-1 +..... +..... +..... +..... +..... + +z=0, w=-1 +..... +..... +..... +..... +..... + +z=1, w=-1 +..... +..... +..... +..... +..... + +z=2, w=-1 +..... +..... +..... +..... +..... + +z=-2, w=0 +###.. +##.## +#...# +.#..# +.###. + +z=-1, w=0 +..... +..... +..... +..... +..... + +z=0, w=0 +..... +..... +..... +..... +..... + +z=1, w=0 +..... +..... +..... +..... +..... + +z=2, w=0 +###.. +##.## +#...# +.#..# +.###. + +z=-2, w=1 +..... +..... +..... +..... +..... + +z=-1, w=1 +..... +..... +..... +..... +..... + +z=0, w=1 +..... +..... +..... +..... +..... + +z=1, w=1 +..... +..... +..... +..... +..... + +z=2, w=1 +..... +..... +..... +..... +..... + +z=-2, w=2 +..... +..... +..#.. +..... +..... + +z=-1, w=2 +..... +..... +..... +..... +..... + +z=0, w=2 +###.. +##.## +#...# +.#..# +.###. + +z=1, w=2 +..... +..... +..... +..... +..... + +z=2, w=2 +..... +..... +..#.. +..... +..... + +After the full six-cycle boot process completes, 848 cubes are left in the active state. + +Starting with your given initial configuration, simulate six cycles in a 4-dimensional space. How many cubes are left in the active state after the sixth cycle? Answer: + +Although it hasn't changed, you can still get your puzzle input. + You can also [Share] this puzzle. diff --git a/day17/ex1.bash b/day17/ex1.bash new file mode 100755 index 0000000..e1a9576 --- /dev/null +++ b/day17/ex1.bash @@ -0,0 +1,109 @@ +#!/bin/bash +# +# ex1.bash: Advent2020 game, day 17/game 1. + +CMD=${0##*/} +#shopt -s extglob + +declare -A life=() +declare -i x=-1 y=-1 z=-1 res=0 +declare -i maxx maxy maxz + +function print_life() { + local -i x=0 y=0 z=0 foundx foundy + for ((z=0; z&2 + echo "$count" +} + +function run_cycle () { + local -i x y z count=0 + local -A lifetmp=() + + for ((x=0; x