— Day 7: Some Assembly Required —
This year, Santa brought little Bobby Tables a set of wires and bitwise logic gates! Unfortunately, little Bobby is a little under the recommended age range, and he needs help <span title=”You had one of these as a kid, right?”>assembling the circuit</span>.
Each wire has an identifier (some lowercase letters) and can carry a
16-bit signal (a number from 0
to 65535). A signal is provided to each wire by a gate, another wire,
or some specific value. Each wire can only get a signal from one source,
but can provide its signal to multiple destinations. A gate provides no
signal until all of its inputs have a signal.
The included instructions booklet describes how to connect the parts
together: x AND y -> z means to connect wires x and y to an AND
gate, and then connect its output to wire z.
For example:
-
123 -> xmeans that the signal123is provided to wirex. -
x AND y -> zmeans that the bitwise AND of wirexand wireyis provided to wirez. -
p LSHIFT 2 -> qmeans that the value from wirepis left-shifted by2and then provided to wireq. -
NOT e -> fmeans that the bitwise complement of the value from wireeis provided to wiref.
Other possible gates include OR (bitwise
OR) and RSHIFT
(right-shift). If, for
some reason, you’d like to emulate the circuit instead, almost all
programming languages (for example,
C,
JavaScript,
or Python) provide
operators for these gates.
For example, here is a simple circuit:
123 -> x
456 -> y
x AND y -> d
x OR y -> e
x LSHIFT 2 -> f
y RSHIFT 2 -> g
NOT x -> h
NOT y -> i
After it is run, these are the signals on the wires:
d: 72
e: 507
f: 492
g: 114
h: 65412
i: 65079
x: 123
y: 456
In little Bobby’s kit’s instructions booklet (provided as your puzzle
input), what signal is ultimately provided to wire a?
Your puzzle answer was 3176.
— Part Two —
Now, take the signal you got on wire a, override wire b to that
signal, and reset the other wires (including wire a). What new signal
is ultimately provided to wire a?
Your puzzle answer was 14710.