83 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Advent of Code
 | ||
| 
 | ||
| --- Day 23: Coprocessor Conflagration ---
 | ||
| 
 | ||
|    You decide to head directly to the CPU and fix the printer from there. As
 | ||
|    you get close, you find an experimental coprocessor doing so much work that
 | ||
|    the local programs are afraid it will halt and catch fire. This would cause
 | ||
|    serious issues for the rest of the computer, so you head in and see what you
 | ||
|    can do.
 | ||
| 
 | ||
|    The code it's running seems to be a variant of the kind you saw recently on
 | ||
|    that tablet. The general functionality seems very similar, but some of the
 | ||
|    instructions are different:
 | ||
| 
 | ||
|      • set X Y sets register X to the value of Y.
 | ||
| 
 | ||
|      • sub X Y decreases register X by the value of Y.
 | ||
| 
 | ||
|      • mul X Y sets register X to the result of multiplying the value contained
 | ||
|        in register X by the value of Y.
 | ||
| 
 | ||
|      • jnz X Y jumps with an offset of the value of Y, but only if the value of
 | ||
|        X is not zero. (An offset of 2 skips the next instruction, an offset of -1
 | ||
|        jumps to the previous instruction, and so on.)
 | ||
| 
 | ||
|      Only the instructions listed above are used. The eight registers here,
 | ||
|      named a through h, all start at 0.
 | ||
| 
 | ||
|    The coprocessor is currently set to some kind of debug mode, which allows
 | ||
|    for testing, but prevents it from doing any meaningful work.
 | ||
| 
 | ||
|    If you run the program (your puzzle input), how many times is the mul
 | ||
|    instruction invoked?
 | ||
| 
 | ||
|    Your puzzle answer was 9409.
 | ||
| 
 | ||
| --- Part Two ---
 | ||
| 
 | ||
|    Now, it's time to fix the problem.
 | ||
| 
 | ||
|    The debug mode switch is wired directly to register a. You flip the switch,
 | ||
|    which makes register a now start at 1 when the program is executed.
 | ||
| 
 | ||
|    Immediately, the coprocessor begins to overheat. Whoever wrote this program
 | ||
|    obviously didn't choose a very efficient implementation. You'll need to
 | ||
|    optimize the program if it has any hope of completing before Santa needs
 | ||
|    that printer working.
 | ||
| 
 | ||
|    The coprocessor's ultimate goal is to determine the final value left in
 | ||
|    register h once the program completes. Technically, if it had that... it
 | ||
|    wouldn't even need to run the program.
 | ||
| 
 | ||
|    After setting register a to 1, if the program were to run to completion,
 | ||
|    what value would be left in register h?
 | ||
| 
 | ||
|    Your puzzle answer was 913.
 | ||
| 
 | ||
|    Both parts of this puzzle are complete! They provide two gold stars: **
 | ||
| 
 | ||
|    At this point, all that is left is for you to admire your advent calendar.
 | ||
| 
 | ||
|    If you still want to see it, you can get your puzzle input.
 | ||
| 
 | ||
| References
 | ||
| 
 | ||
|    Visible links
 | ||
|    . http://adventofcode.com/
 | ||
|    . http://adventofcode.com/2017/about
 | ||
|    . http://adventofcode.com/2017/support
 | ||
|    . http://adventofcode.com/2017/events
 | ||
|    . http://adventofcode.com/2017/settings
 | ||
|    . http://adventofcode.com/2017/auth/logout
 | ||
|    . http://adventofcode.com/2017
 | ||
|    . http://adventofcode.com/2017
 | ||
|    . http://adventofcode.com/2017/leaderboard
 | ||
|    . http://adventofcode.com/2017/stats
 | ||
|    . http://adventofcode.com/2017/sponsors
 | ||
|    . http://adventofcode.com/2017/sponsors
 | ||
|    . https://en.wikipedia.org/wiki/Halt_and_Catch_Fire
 | ||
|    . http://adventofcode.com/2017/day/18
 | ||
|    . http://adventofcode.com/2017
 | ||
|    . http://adventofcode.com/2017/day/23/input
 |