85 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Advent of Code
 | |
| 
 | |
| --- Day 21: Chronal Conversion ---
 | |
| 
 | |
|    You should have been watching where you were going, because as you wander the
 | |
|    new North Pole base, you trip and fall into a very deep hole!
 | |
| 
 | |
|    Just kidding. You're falling through time again.
 | |
| 
 | |
|    If you keep up your current pace, you should have resolved all of the temporal
 | |
|    anomalies by the next time the device activates. Since you have very little
 | |
|    interest in browsing history in 500-year increments for the rest of your life,
 | |
|    you need to find a way to get back to your present time.
 | |
| 
 | |
|    After a little research, you discover two important facts about the behavior
 | |
|    of the device:
 | |
| 
 | |
|    First, you discover that the device is hard-wired to always send you back in
 | |
|    time in 500-year increments. Changing this is probably not feasible.
 | |
| 
 | |
|    Second, you discover the activation system (your puzzle input) for the time
 | |
|    travel module. Currently, it appears to run forever without halting.
 | |
| 
 | |
|    If you can cause the activation system to halt at a specific moment, maybe you
 | |
|    can make the device send you so far back in time that you cause an integer
 | |
|    underflow in time itself and wrap around back to your current time!
 | |
| 
 | |
|    The device executes the program as specified in manual section one and manual
 | |
|    section two.
 | |
| 
 | |
|    Your goal is to figure out how the program works and cause it to halt. You can
 | |
|    only control register 0; every other register begins at 0 as usual.
 | |
| 
 | |
|    Because time travel is a dangerous activity, the activation system begins with
 | |
|    a few instructions which verify that bitwise AND (via bani) does a numeric
 | |
|    operation and not an operation as if the inputs were interpreted as strings.
 | |
|    If the test fails, it enters an infinite loop re-running the test instead of
 | |
|    allowing the program to execute normally. If the test passes, the program
 | |
|    continues, and assumes that all other bitwise operations (banr, bori, and
 | |
|    borr) also interpret their inputs as numbers. (Clearly, the Elves who wrote
 | |
|    this system were worried that someone might introduce a bug while trying to
 | |
|    emulate this system with a scripting language.)
 | |
| 
 | |
|    What is the lowest non-negative integer value for register 0 that causes the
 | |
|    program to halt after executing the fewest instructions? (Executing the same
 | |
|    instruction multiple times counts as multiple instructions executed.)
 | |
| 
 | |
|    Your puzzle answer was 7967233.
 | |
| 
 | |
| --- Part Two ---
 | |
| 
 | |
|    In order to determine the timing window for your underflow exploit, you also
 | |
|    need an upper bound:
 | |
| 
 | |
|    What is the lowest non-negative integer value for register 0 that causes the
 | |
|    program to halt after executing the most instructions? (The program must
 | |
|    actually halt; running forever does not count as halting.)
 | |
| 
 | |
|    Your puzzle answer was 16477902.
 | |
| 
 | |
|    Both parts of this puzzle are complete! They provide two gold stars: **
 | |
| 
 | |
| References
 | |
| 
 | |
|    Visible links
 | |
|    . https://adventofcode.com/
 | |
|    . https://adventofcode.com/2018/about
 | |
|    . https://adventofcode.com/2018/events
 | |
|    . https://adventofcode.com/2018/settings
 | |
|    . https://adventofcode.com/2018/auth/logout
 | |
|    . Advent of Code Supporter
 | |
| 	https://adventofcode.com/2018/support
 | |
|    . https://adventofcode.com/2018
 | |
|    . https://adventofcode.com/2018
 | |
|    . https://adventofcode.com/2018/support
 | |
|    . https://adventofcode.com/2018/sponsors
 | |
|    . https://adventofcode.com/2018/leaderboard
 | |
|    . https://adventofcode.com/2018/stats
 | |
|    . https://adventofcode.com/2018/sponsors
 | |
|    . https://cwe.mitre.org/data/definitions/191.html
 | |
|    . https://adventofcode.com/2018/day/16
 | |
|    . https://adventofcode.com/2018/day/19
 | |
|    . https://adventofcode.com/2018
 | |
|    . https://adventofcode.com/2018/day/21/input
 |