adventofcode/2016/day12/problem

92 lines
3.2 KiB
Plaintext
Raw Normal View History

2016-12-12 14:43:14 +00:00
Advent of Code
--- Day 12: Leonardo's Monorail ---
2018-03-15 16:24:23 +00:00
You finally reach the top floor of this building: a garden with a slanted
glass ceiling. Looks like there are no more stars to be had.
2016-12-12 14:43:14 +00:00
2018-03-15 16:24:23 +00:00
While sitting on a nearby bench amidst some tiger lilies, you manage to
decrypt some of the files you extracted from the servers downstairs.
2016-12-12 14:43:14 +00:00
2018-03-15 16:24:23 +00:00
According to these documents, Easter Bunny HQ isn't just this building -
it's a collection of buildings in the nearby area. They're all connected by
a local monorail, and there's another building not far from here!
Unfortunately, being night, the monorail is currently not operating.
2016-12-12 14:43:14 +00:00
2018-03-15 16:24:23 +00:00
You remotely connect to the monorail control systems and discover that the
boot sequence expects a password. The password-checking logic (your puzzle
input) is easy to extract, but the code it uses is strange: it's assembunny
code designed for the new computer you just assembled. You'll have to
execute the code and get the password.
2016-12-12 14:43:14 +00:00
2018-03-15 16:24:23 +00:00
The assembunny code you've extracted operates on four registers (a, b, c,
and d) that start at 0 and can hold any integer. However, it seems to make
use of only a few instructions:
 cpy x y copies x (either an integer or the value of a register) into
register y.
2016-12-12 14:43:14 +00:00
 inc x increases the value of register x by one.
2018-03-15 16:24:23 +00:00
2016-12-12 14:43:14 +00:00
 dec x decreases the value of register x by one.
2018-03-15 16:24:23 +00:00
 jnz x y jumps to an instruction y away (positive means forward; negative
means backward), but only if x is not zero.
The jnz instruction moves relative to itself: an offset of -1 would continue
at the previous instruction, while an offset of 2 would skip over the next
instruction.
2016-12-12 14:43:14 +00:00
For example:
cpy 41 a
inc a
inc a
dec a
jnz a 2
dec a
2018-03-15 16:24:23 +00:00
The above code would set register a to 41, increase its value by 2, decrease
its value by 1, and then skip the last dec a (because a is not zero, so the
jnz a 2 skips it), leaving register a at 42. When you move past the last
2016-12-12 14:43:14 +00:00
instruction, the program halts.
2018-03-15 16:24:23 +00:00
After executing the assembunny code in your puzzle input, what value is left
in register a?
2016-12-12 14:43:14 +00:00
2018-03-15 16:24:23 +00:00
Your puzzle answer was 318077.
2016-12-12 14:43:14 +00:00
--- Part Two ---
2018-03-15 16:24:23 +00:00
As you head down the fire escape to the monorail, you notice it didn't
start; register c needs to be initialized to the position of the ignition
key.
2016-12-12 14:43:14 +00:00
2018-03-15 16:24:23 +00:00
If you instead initialize register c to be 1, what value is now left in
register a?
2016-12-12 14:43:14 +00:00
2018-03-15 16:24:23 +00:00
Your puzzle answer was 9227731.
2016-12-12 14:43:14 +00:00
References
Visible links
. http://adventofcode.com/
. http://adventofcode.com/2016/about
. http://adventofcode.com/2016/support
. http://adventofcode.com/2016/events
. http://adventofcode.com/2016/settings
. http://adventofcode.com/2016/auth/logout
. http://adventofcode.com/2016
. http://adventofcode.com/2016
. http://adventofcode.com/2016/leaderboard
. http://adventofcode.com/2016/stats
. http://adventofcode.com/2016/sponsors
. http://adventofcode.com/2016/sponsors
. https://www.google.com/search?q=tiger+lilies&tbm=isch
. http://adventofcode.com/2016/day/11
. https://en.wikipedia.org/wiki/Processor_register
. https://en.wikipedia.org/wiki/Integer
. https://en.wikipedia.org/wiki/Instruction_set
. http://adventofcode.com/2016
. http://adventofcode.com/2016/day/12/input