Mercurial > hg > aoc
diff 2017/day25/problem @ 34:049fb8e56025
Add problem statements and inputs
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Tue, 09 Jan 2018 21:51:44 -0500 |
parents | |
children |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/2017/day25/problem @@ -0,0 +1,117 @@ +--- Day 25: The Halting Problem --- + +Following the twisty passageways deeper and deeper into the CPU, you +finally reach the core of the computer. Here, in the expansive central +chamber, you find a grand apparatus that fills the entire room, +suspended nanometers above your head. + +You had always imagined CPUs to be noisy, chaotic places, bustling +with activity. Instead, the room is quiet, motionless, and dark. + +Suddenly, you and the CPU's garbage collector startle each other. +"It's not often we get many visitors here!", he says. You inquire +about the stopped machinery. + +"It stopped milliseconds ago; not sure why. I'm a garbage collector, +not a doctor." You ask what the machine is for. + +"Programs these days, don't know their origins. That's the Turing +machine! It's what makes the whole computer work." You try to explain +that Turing machines are merely models of computation, but he cuts you +off. "No, see, that's just what they want you to think. Ultimately, +inside every CPU, there's a Turing machine driving the whole thing! +Too bad this one's broken. We're doomed!" + +You ask how you can help. "Well, unfortunately, the only way to get +the computer running again would be to create a whole new Turing +machine from scratch, but there's no way you can-" He notices the look +on your face, gives you a curious glance, shrugs, and goes back to +sweeping the floor. + +You find the Turing machine blueprints (your puzzle input) on a tablet +in a nearby pile of debris. Looking back up at the broken Turing +machine above, you can start to identify its parts: + + A tape which contains 0 repeated infinitely to the left and right. + + A cursor, which can move left or right along the tape and read or + write values at its current position. + + A set of states, each containing rules about what to do based on + the current value under the cursor. + + +Each slot on the tape has two possible values: 0 (the starting value +for all slots) and 1. Based on whether the cursor is pointing at a 0 +or a 1, the current state says what value to write at the current +position of the cursor, whether to move the cursor left or right one +slot, and which state to use next. + +For example, suppose you found the following blueprint: + +Begin in state A. +Perform a diagnostic checksum after 6 steps. + +In state A: + If the current value is 0: + - Write the value 1. + - Move one slot to the right. + - Continue with state B. + If the current value is 1: + - Write the value 0. + - Move one slot to the left. + - Continue with state B. + +In state B: + If the current value is 0: + - Write the value 1. + - Move one slot to the left. + - Continue with state A. + If the current value is 1: + - Write the value 1. + - Move one slot to the right. + - Continue with state A. + +Running it until the number of steps required to take the listed +diagnostic checksum would result in the following tape configurations +(with the cursor marked in square brackets): + +... 0 0 0 [0] 0 0 ... (before any steps; about to run state A) +... 0 0 0 1 [0] 0 ... (after 1 step; about to run state B) +... 0 0 0 [1] 1 0 ... (after 2 steps; about to run state A) +... 0 0 [0] 0 1 0 ... (after 3 steps; about to run state B) +... 0 [0] 1 0 1 0 ... (after 4 steps; about to run state A) +... 0 1 [1] 0 1 0 ... (after 5 steps; about to run state B) +... 0 1 1 [0] 1 0 ... (after 6 steps; about to run state A) + +The CPU can confirm that the Turing machine is working by taking a +diagnostic checksum after a specific number of steps (given in the +blueprint). Once the specified number of steps have been executed, the +Turing machine should pause; once it does, count the number of times 1 +appears on the tape. In the above example, the diagnostic checksum is +3. + +Recreate the Turing machine and save the computer! What is the +diagnostic checksum it produces once it's working again? + +Your puzzle answer was 2526. + +--- Part Two --- + +The Turing machine, and soon the entire computer, springs back to +life. A console glows dimly nearby, awaiting your command. + +> reboot printer +Error: That command requires priority 50. You currently have priority 0. +You must deposit 50 stars to increase your priority to the required level. + +The console flickers for a moment, and then prints another message: + +Star accepted. +You must deposit 49 stars to increase your priority to the required level. + +The garbage collector winks at you, then continues sweeping. + +If you like, you can [Reboot the Printer Again]. + +Both parts of this puzzle are complete! They provide two gold stars: **