190 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # Advent of Code
 | |
| 
 | |
| --- Day 12: Passage Pathing ---
 | |
| 
 | |
|    With your submarine's subterranean subsystems subsisting suboptimally, the only way you're getting out of this cave anytime soon is by finding a
 | |
|    path yourself. Not just a path - the only way to know if you've found the best path is to find all of them.
 | |
| 
 | |
|    Fortunately, the sensors are still mostly working, and so you build a rough map of the remaining caves (your puzzle input). For example:
 | |
| 
 | |
|  start-A
 | |
|  start-b
 | |
|  A-c
 | |
|  A-b
 | |
|  b-d
 | |
|  A-end
 | |
|  b-end
 | |
| 
 | |
|    This is a list of how all of the caves are connected. You start in the cave named start, and your destination is the cave named end. An entry
 | |
|    like b-d means that cave b is connected to cave d - that is, you can move between them.
 | |
| 
 | |
|    So, the above cave system looks roughly like this:
 | |
| 
 | |
|      start
 | |
|      /   \
 | |
|  c--A-----b--d
 | |
|      \   /
 | |
|       end
 | |
| 
 | |
|    Your goal is to find the number of distinct paths that start at start, end at end, and don't visit small caves more than once. There are two
 | |
|    types of caves: big caves (written in uppercase, like A) and small caves (written in lowercase, like b). It would be a waste of time to visit any
 | |
|    small cave more than once, but big caves are large enough that it might be worth visiting them multiple times. So, all paths you find should
 | |
|    visit small caves at most once, and can visit big caves any number of times.
 | |
| 
 | |
|    Given these rules, there are 10 paths through this example cave system:
 | |
| 
 | |
|  start,A,b,A,c,A,end
 | |
|  start,A,b,A,end
 | |
|  start,A,b,end
 | |
|  start,A,c,A,b,A,end
 | |
|  start,A,c,A,b,end
 | |
|  start,A,c,A,end
 | |
|  start,A,end
 | |
|  start,b,A,c,A,end
 | |
|  start,b,A,end
 | |
|  start,b,end
 | |
| 
 | |
|    (Each line in the above list corresponds to a single path; the caves visited by that path are listed in the order they are visited and separated
 | |
|    by commas.)
 | |
| 
 | |
|    Note that in this cave system, cave d is never visited by any path: to do so, cave b would need to be visited twice (once on the way to cave d
 | |
|    and a second time when returning from cave d), and since cave b is small, this is not allowed.
 | |
| 
 | |
|    Here is a slightly larger example:
 | |
| 
 | |
|  dc-end
 | |
|  HN-start
 | |
|  start-kj
 | |
|  dc-start
 | |
|  dc-HN
 | |
|  LN-dc
 | |
|  HN-end
 | |
|  kj-sa
 | |
|  kj-HN
 | |
|  kj-dc
 | |
| 
 | |
|    The 19 paths through it are as follows:
 | |
| 
 | |
|  start,HN,dc,HN,end
 | |
|  start,HN,dc,HN,kj,HN,end
 | |
|  start,HN,dc,end
 | |
|  start,HN,dc,kj,HN,end
 | |
|  start,HN,end
 | |
|  start,HN,kj,HN,dc,HN,end
 | |
|  start,HN,kj,HN,dc,end
 | |
|  start,HN,kj,HN,end
 | |
|  start,HN,kj,dc,HN,end
 | |
|  start,HN,kj,dc,end
 | |
|  start,dc,HN,end
 | |
|  start,dc,HN,kj,HN,end
 | |
|  start,dc,end
 | |
|  start,dc,kj,HN,end
 | |
|  start,kj,HN,dc,HN,end
 | |
|  start,kj,HN,dc,end
 | |
|  start,kj,HN,end
 | |
|  start,kj,dc,HN,end
 | |
|  start,kj,dc,end
 | |
| 
 | |
|    Finally, this even larger example has 226 paths through it:
 | |
| 
 | |
|  fs-end
 | |
|  he-DX
 | |
|  fs-he
 | |
|  start-DX
 | |
|  pj-DX
 | |
|  end-zg
 | |
|  zg-sl
 | |
|  zg-pj
 | |
|  pj-he
 | |
|  RW-he
 | |
|  fs-DX
 | |
|  pj-RW
 | |
|  zg-RW
 | |
|  start-pj
 | |
|  he-WI
 | |
|  zg-he
 | |
|  pj-fs
 | |
|  start-RW
 | |
| 
 | |
|    How many paths through this cave system are there that visit small caves at most once?
 | |
| 
 | |
|    Your puzzle answer was 4413.
 | |
| 
 | |
| --- Part Two ---
 | |
| 
 | |
|    After reviewing the available paths, you realize you might have time to visit a single small cave twice. Specifically, big caves can be visited
 | |
|    any number of times, a single small cave can be visited at most twice, and the remaining small caves can be visited at most once. However, the
 | |
|    caves named start and end can only be visited exactly once each: once you leave the start cave, you may not return to it, and once you reach the
 | |
|    end cave, the path must end immediately.
 | |
| 
 | |
|    Now, the 36 possible paths through the first example above are:
 | |
| 
 | |
|  start,A,b,A,b,A,c,A,end
 | |
|  start,A,b,A,b,A,end
 | |
|  start,A,b,A,b,end
 | |
|  start,A,b,A,c,A,b,A,end
 | |
|  start,A,b,A,c,A,b,end
 | |
|  start,A,b,A,c,A,c,A,end
 | |
|  start,A,b,A,c,A,end
 | |
|  start,A,b,A,end
 | |
|  start,A,b,d,b,A,c,A,end
 | |
|  start,A,b,d,b,A,end
 | |
|  start,A,b,d,b,end
 | |
|  start,A,b,end
 | |
|  start,A,c,A,b,A,b,A,end
 | |
|  start,A,c,A,b,A,b,end
 | |
|  start,A,c,A,b,A,c,A,end
 | |
|  start,A,c,A,b,A,end
 | |
|  start,A,c,A,b,d,b,A,end
 | |
|  start,A,c,A,b,d,b,end
 | |
|  start,A,c,A,b,end
 | |
|  start,A,c,A,c,A,b,A,end
 | |
|  start,A,c,A,c,A,b,end
 | |
|  start,A,c,A,c,A,end
 | |
|  start,A,c,A,end
 | |
|  start,A,end
 | |
|  start,b,A,b,A,c,A,end
 | |
|  start,b,A,b,A,end
 | |
|  start,b,A,b,end
 | |
|  start,b,A,c,A,b,A,end
 | |
|  start,b,A,c,A,b,end
 | |
|  start,b,A,c,A,c,A,end
 | |
|  start,b,A,c,A,end
 | |
|  start,b,A,end
 | |
|  start,b,d,b,A,c,A,end
 | |
|  start,b,d,b,A,end
 | |
|  start,b,d,b,end
 | |
|  start,b,end
 | |
| 
 | |
|    The slightly larger example above now has 103 paths through it, and the even larger example now has 3509 paths through it.
 | |
| 
 | |
|    Given these new rules, how many paths through this cave system are there?
 | |
| 
 | |
|    Your puzzle answer was 118803.
 | |
| 
 | |
|    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/2021/about
 | |
|    . https://adventofcode.com/2021/events
 | |
|    . https://adventofcode.com/2021/settings
 | |
|    . https://adventofcode.com/2021/auth/logout
 | |
|    . Advent of Code Supporter
 | |
| 	https://adventofcode.com/2021/support
 | |
|    . https://adventofcode.com/2021
 | |
|    . https://adventofcode.com/2021
 | |
|    . https://adventofcode.com/2021/support
 | |
|    . https://adventofcode.com/2021/sponsors
 | |
|    . https://adventofcode.com/2021/leaderboard
 | |
|    . https://adventofcode.com/2021/stats
 | |
|    . https://adventofcode.com/2021/sponsors
 | |
|    . https://adventofcode.com/2021
 | |
|    . https://adventofcode.com/2021/day/12/input
 |