Doing some C learnin'.
Also, reformatted all the problems.
This commit is contained in:
82
2017/day23/problem
Normal file
82
2017/day23/problem
Normal file
@@ -0,0 +1,82 @@
|
||||
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
|
Reference in New Issue
Block a user