244 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			244 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Advent of Code
 | ||
| 
 | ||
| --- Day 11: Seating System ---
 | ||
| 
 | ||
|    Your plane lands with plenty of time to spare. The final leg of your journey is a ferry that goes directly to the tropical island where you can finally start your vacation. As you reach the waiting area to board the ferry, you realize you're so
 | ||
|    early, nobody else has even arrived yet!
 | ||
| 
 | ||
|    By modeling the process people use to choose (or abandon) their seat in the waiting area, you're pretty sure you can predict the best place to sit. You make a quick map of the seat layout (your puzzle input).
 | ||
| 
 | ||
|    The seat layout fits neatly on a grid. Each position is either floor (.), an empty seat (L), or an occupied seat (#). For example, the initial seat layout might look like this:
 | ||
| 
 | ||
|  L.LL.LL.LL
 | ||
|  LLLLLLL.LL
 | ||
|  L.L.L..L..
 | ||
|  LLLL.LL.LL
 | ||
|  L.LL.LL.LL
 | ||
|  L.LLLLL.LL
 | ||
|  ..L.L.....
 | ||
|  LLLLLLLLLL
 | ||
|  L.LLLLLL.L
 | ||
|  L.LLLLL.LL
 | ||
| 
 | ||
|    Now, you just need to model the people who will be arriving shortly. Fortunately, people are entirely predictable and always follow a simple set of rules. All decisions are based on the number of occupied seats adjacent to a given seat (one of
 | ||
|    the eight positions immediately up, down, left, right, or diagonal from the seat). The following rules are applied to every seat simultaneously:
 | ||
| 
 | ||
|      • If a seat is empty (L) and there are no occupied seats adjacent to it, the seat becomes occupied.
 | ||
|      • If a seat is occupied (#) and four or more seats adjacent to it are also occupied, the seat becomes empty.
 | ||
|      • Otherwise, the seat's state does not change.
 | ||
| 
 | ||
|    Floor (.) never changes; seats don't move, and nobody sits on the floor.
 | ||
| 
 | ||
|    After one round of these rules, every seat in the example layout becomes occupied:
 | ||
| 
 | ||
|  #.##.##.##
 | ||
|  #######.##
 | ||
|  #.#.#..#..
 | ||
|  ####.##.##
 | ||
|  #.##.##.##
 | ||
|  #.#####.##
 | ||
|  ..#.#.....
 | ||
|  ##########
 | ||
|  #.######.#
 | ||
|  #.#####.##
 | ||
| 
 | ||
|    After a second round, the seats with four or more occupied adjacent seats become empty again:
 | ||
| 
 | ||
|  #.LL.L#.##
 | ||
|  #LLLLLL.L#
 | ||
|  L.L.L..L..
 | ||
|  #LLL.LL.L#
 | ||
|  #.LL.LL.LL
 | ||
|  #.LLLL#.##
 | ||
|  ..L.L.....
 | ||
|  #LLLLLLLL#
 | ||
|  #.LLLLLL.L
 | ||
|  #.#LLLL.##
 | ||
| 
 | ||
|    This process continues for three more rounds:
 | ||
| 
 | ||
|  #.##.L#.##
 | ||
|  #L###LL.L#
 | ||
|  L.#.#..#..
 | ||
|  #L##.##.L#
 | ||
|  #.##.LL.LL
 | ||
|  #.###L#.##
 | ||
|  ..#.#.....
 | ||
|  #L######L#
 | ||
|  #.LL###L.L
 | ||
|  #.#L###.##
 | ||
| 
 | ||
|  #.#L.L#.##
 | ||
|  #LLL#LL.L#
 | ||
|  L.L.L..#..
 | ||
|  #LLL.##.L#
 | ||
|  #.LL.LL.LL
 | ||
|  #.LL#L#.##
 | ||
|  ..L.L.....
 | ||
|  #L#LLLL#L#
 | ||
|  #.LLLLLL.L
 | ||
|  #.#L#L#.##
 | ||
| 
 | ||
|  #.#L.L#.##
 | ||
|  #LLL#LL.L#
 | ||
|  L.#.L..#..
 | ||
|  #L##.##.L#
 | ||
|  #.#L.LL.LL
 | ||
|  #.#L#L#.##
 | ||
|  ..L.L.....
 | ||
|  #L#L##L#L#
 | ||
|  #.LLLLLL.L
 | ||
|  #.#L#L#.##
 | ||
| 
 | ||
|    At this point, something interesting happens: the chaos stabilizes and further applications of these rules cause no seats to change state! Once people stop moving around, you count 37 occupied seats.
 | ||
| 
 | ||
|    Simulate your seating area by applying the seating rules repeatedly until no seats change state. How many seats end up occupied?
 | ||
| 
 | ||
|    Your puzzle answer was 2265.
 | ||
| 
 | ||
| --- Part Two ---
 | ||
| 
 | ||
|    As soon as people start to arrive, you realize your mistake. People don't just care about adjacent seats - they care about the first seat they can see in each of those eight directions!
 | ||
| 
 | ||
|    Now, instead of considering just the eight immediately adjacent seats, consider the first seat in each of those eight directions. For example, the empty seat below would see eight occupied seats:
 | ||
| 
 | ||
|  .......#.
 | ||
|  ...#.....
 | ||
|  .#.......
 | ||
|  .........
 | ||
|  ..#L....#
 | ||
|  ....#....
 | ||
|  .........
 | ||
|  #........
 | ||
|  ...#.....
 | ||
| 
 | ||
|    The leftmost empty seat below would only see one empty seat, but cannot see any of the occupied ones:
 | ||
| 
 | ||
|  .............
 | ||
|  .L.L.#.#.#.#.
 | ||
|  .............
 | ||
| 
 | ||
|    The empty seat below would see no occupied seats:
 | ||
| 
 | ||
|  .##.##.
 | ||
|  #.#.#.#
 | ||
|  ##...##
 | ||
|  ...L...
 | ||
|  ##...##
 | ||
|  #.#.#.#
 | ||
|  .##.##.
 | ||
| 
 | ||
|    Also, people seem to be more tolerant than you expected: it now takes five or more visible occupied seats for an occupied seat to become empty (rather than four or more from the previous rules). The other rules still apply: empty seats that see
 | ||
|    no occupied seats become occupied, seats matching no rule don't change, and floor never changes.
 | ||
| 
 | ||
|    Given the same starting layout as above, these new rules cause the seating area to shift around as follows:
 | ||
| 
 | ||
|  L.LL.LL.LL
 | ||
|  LLLLLLL.LL
 | ||
|  L.L.L..L..
 | ||
|  LLLL.LL.LL
 | ||
|  L.LL.LL.LL
 | ||
|  L.LLLLL.LL
 | ||
|  ..L.L.....
 | ||
|  LLLLLLLLLL
 | ||
|  L.LLLLLL.L
 | ||
|  L.LLLLL.LL
 | ||
| 
 | ||
|  #.##.##.##
 | ||
|  #######.##
 | ||
|  #.#.#..#..
 | ||
|  ####.##.##
 | ||
|  #.##.##.##
 | ||
|  #.#####.##
 | ||
|  ..#.#.....
 | ||
|  ##########
 | ||
|  #.######.#
 | ||
|  #.#####.##
 | ||
| 
 | ||
|  #.LL.LL.L#
 | ||
|  #LLLLLL.LL
 | ||
|  L.L.L..L..
 | ||
|  LLLL.LL.LL
 | ||
|  L.LL.LL.LL
 | ||
|  L.LLLLL.LL
 | ||
|  ..L.L.....
 | ||
|  LLLLLLLLL#
 | ||
|  #.LLLLLL.L
 | ||
|  #.LLLLL.L#
 | ||
| 
 | ||
|  #.L#.##.L#
 | ||
|  #L#####.LL
 | ||
|  L.#.#..#..
 | ||
|  ##L#.##.##
 | ||
|  #.##.#L.##
 | ||
|  #.#####.#L
 | ||
|  ..#.#.....
 | ||
|  LLL####LL#
 | ||
|  #.L#####.L
 | ||
|  #.L####.L#
 | ||
| 
 | ||
|  #.L#.L#.L#
 | ||
|  #LLLLLL.LL
 | ||
|  L.L.L..#..
 | ||
|  ##LL.LL.L#
 | ||
|  L.LL.LL.L#
 | ||
|  #.LLLLL.LL
 | ||
|  ..L.L.....
 | ||
|  LLLLLLLLL#
 | ||
|  #.LLLLL#.L
 | ||
|  #.L#LL#.L#
 | ||
| 
 | ||
|  #.L#.L#.L#
 | ||
|  #LLLLLL.LL
 | ||
|  L.L.L..#..
 | ||
|  ##L#.#L.L#
 | ||
|  L.L#.#L.L#
 | ||
|  #.L####.LL
 | ||
|  ..#.#.....
 | ||
|  LLL###LLL#
 | ||
|  #.LLLLL#.L
 | ||
|  #.L#LL#.L#
 | ||
| 
 | ||
|  #.L#.L#.L#
 | ||
|  #LLLLLL.LL
 | ||
|  L.L.L..#..
 | ||
|  ##L#.#L.L#
 | ||
|  L.L#.LL.L#
 | ||
|  #.LLLL#.LL
 | ||
|  ..#.L.....
 | ||
|  LLL###LLL#
 | ||
|  #.LLLLL#.L
 | ||
|  #.L#LL#.L#
 | ||
| 
 | ||
|    Again, at this point, people stop shifting around and the seating area reaches equilibrium. Once this occurs, you count 26 occupied seats.
 | ||
| 
 | ||
|    Given the new visibility method and the rule change for occupied seats becoming empty, once equilibrium is reached, how many seats end up occupied?
 | ||
| 
 | ||
|    Your puzzle answer was 2045.
 | ||
| 
 | ||
|    Both parts of this puzzle are complete! They provide two gold stars: **
 | ||
| 
 | ||
|    At this point, you should return to your Advent calendar and try another puzzle.
 | ||
| 
 | ||
|    If you still want to see it, you can get your puzzle input.
 | ||
| 
 | ||
| References
 | ||
| 
 | ||
|    Visible links
 | ||
|    . https://adventofcode.com/
 | ||
|    . https://adventofcode.com/2020/about
 | ||
|    . https://adventofcode.com/2020/events
 | ||
|    . https://adventofcode.com/2020/settings
 | ||
|    . https://adventofcode.com/2020/auth/logout
 | ||
|    . Advent of Code Supporter
 | ||
| 	https://adventofcode.com/2020/support
 | ||
|    . https://adventofcode.com/2020
 | ||
|    . https://adventofcode.com/2020
 | ||
|    . https://adventofcode.com/2020/support
 | ||
|    . https://adventofcode.com/2020/sponsors
 | ||
|    . https://adventofcode.com/2020/leaderboard
 | ||
|    . https://adventofcode.com/2020/stats
 | ||
|    . https://adventofcode.com/2020/sponsors
 | ||
|    . https://adventofcode.com/2020
 | ||
|    . https://adventofcode.com/2020/day/11/input
 |