In [2]:
#! /usr/bin/python
import re
import numpy
import numbers
In [9]:
def load_gate( gate ):
instruction, wire = gate[0]
if not any(x in instruction for x in ['OR', 'AND', 'LSHIFT', 'RSHIFT', 'NOT']):
instruct = [wire, [" ", "WIRE", instruction.split(' ')[0]]]
try:
instruct[1][2] = numpy.uint16(int(instruct[1][2]))
except ValueError:
print("create_gate: oops")
if isinstance( instruct[1][2], numpy.uint16 ):
instruct[1][1] = "SOURCE"
gates.append(instruct)
if any(x in instruction for x in ['OR', 'AND']):
instruct = [wire, instruction.split(' ')]
gates.append(instruct)
if any(x in instruction for x in ['LSHIFT', 'RSHIFT']):
instruct = [wire, instruction.split(' ')]
gates.append(instruct)
if any(x in instruction for x in ['NOT']):
instruct = [wire, [" ", instruction.split(' ')[0], instruction.split(' ')[1]]]
gates.append(instruct)
In [10]:
def create_wire( wire, value ):
wires[wire] = numpy.uint16(value)
print ("CREATING WIRE: ", wire, " with value :", value)
In [11]:
def execute_gate ( gate ):
if (gate[1][1]) == 'AND':
create_wire(gate[0], numpy.uint16(wires[gate[1][0]]) & numpy.uint16(wires[gate[1][2]]))
if (gate[1][1]) == 'OR':
create_wire(gate[0], numpy.uint16(wires[gate[1][0]]) | numpy.uint16(wires[gate[1][2]]))
if (gate[1][1]) == 'LSHIFT':
create_wire(gate[0], numpy.uint16(wires[gate[1][0]]) << int(gate[1][2]))
if (gate[1][1]) == 'RSHIFT':
create_wire(gate[0], numpy.uint16(wires[gate[1][0]]) >> int(gate[1][2]))
if (gate[1][1]) == 'NOT':
create_wire(gate[0], ~numpy.uint16(wires[gate[1][2]]))
if (gate[1][1]) == 'WIRE':
create_wire(gate[0], numpy.uint16(wires[gate[1][2]]))
In [12]:
def find_candidate( gates ):
for gate in gates:
if ((gate[1][1]) == 'AND'):
if (gate[1][0] in wires) and (gate[1][2] in wires):
exec_gate = gate
gates.remove(exec_gate)
break
if (gate[1][1]) == 'OR':
if (gate[1][0] in wires) and (gate[1][2] in wires):
exec_gate = gate
gates.remove(exec_gate)
break
if (gate[1][1]) == 'LSHIFT':
if (gate[1][0] in wires):
exec_gate = gate
gates.remove(exec_gate)
break
if (gate[1][1]) == 'RSHIFT':
if (gate[1][0] in wires):
exec_gate = gate
gates.remove(exec_gate)
break
if (gate[1][1]) == 'NOT':
if (gate[1][2] in wires):
exec_gate = gate
gates.remove(exec_gate)
break
if (gate[1][1]) == 'WIRE':
if (gate[1][2] in wires):
exec_gate = gate
gates.remove(exec_gate)
break
return exec_gate
In [13]:
match_gate = re.compile('(^[a-zA-Z0-9 ]*) -> ([a-z]*)')
#filename = './input' #first star
filename = './input2' #second star
wires = {}
gates = []
# READ ALL GATES
with open(filename) as f:
for linen in f:
line = linen.rstrip('\n')
if not (match_gate.findall(line) == []):
load_gate (match_gate.findall(line))
# SETUP ALL SOURCES
create_wire('1', 1)
delgates = []
for gate in gates:
if gate[1][1] == "SOURCE":
create_wire(gate[0][0], gate[1][2])
delgates.append(gate)
for gate in delgates:
gates.remove(gate)
print ("-----------")
# FIND GATES WITH COMPLETE SOURCES AND EXECUTE
while not (gates == []):
print ("---\n# GATES LEFT: ", len(gates))
candidate = find_candidate( gates )
print ("EXECUTING GATE: ", candidate[1][0], candidate[1][1], candidate[1][2], " -> ", candidate[0])
execute_gate ( candidate )
create_gate: oops
CREATING WIRE: 1 with value : 1
CREATING WIRE: b with value : 16076
CREATING WIRE: c with value : 0
-----------
---
# GATES LEFT: 337
EXECUTING GATE: c LSHIFT 1 -> t
CREATING WIRE: t with value : 0
---
# GATES LEFT: 336
EXECUTING GATE: b RSHIFT 1 -> v
CREATING WIRE: v with value : 8038
---
# GATES LEFT: 335
EXECUTING GATE: b RSHIFT 5 -> f
CREATING WIRE: f with value : 502
---
# GATES LEFT: 334
EXECUTING GATE: b RSHIFT 2 -> d
CREATING WIRE: d with value : 4019
---
# GATES LEFT: 333
EXECUTING GATE: b RSHIFT 3 -> e
CREATING WIRE: e with value : 2009
---
# GATES LEFT: 332
EXECUTING GATE: e OR f -> g
CREATING WIRE: g with value : 2047
---
# GATES LEFT: 331
EXECUTING GATE: e AND f -> h
CREATING WIRE: h with value : 464
---
# GATES LEFT: 330
EXECUTING GATE: NOT h -> i
CREATING WIRE: i with value : 65071
---
# GATES LEFT: 329
EXECUTING GATE: g AND i -> j
CREATING WIRE: j with value : 1583
---
# GATES LEFT: 328
EXECUTING GATE: d OR j -> k
CREATING WIRE: k with value : 4031
---
# GATES LEFT: 327
EXECUTING GATE: d AND j -> l
CREATING WIRE: l with value : 1571
---
# GATES LEFT: 326
EXECUTING GATE: NOT l -> m
CREATING WIRE: m with value : 63964
---
# GATES LEFT: 325
EXECUTING GATE: k AND m -> n
CREATING WIRE: n with value : 2460
---
# GATES LEFT: 324
EXECUTING GATE: b OR n -> o
CREATING WIRE: o with value : 16348
---
# GATES LEFT: 323
EXECUTING GATE: b AND n -> p
CREATING WIRE: p with value : 2188
---
# GATES LEFT: 322
EXECUTING GATE: NOT p -> q
CREATING WIRE: q with value : 63347
---
# GATES LEFT: 321
EXECUTING GATE: o AND q -> r
CREATING WIRE: r with value : 14160
---
# GATES LEFT: 320
EXECUTING GATE: 1 AND r -> s
CREATING WIRE: s with value : 0
---
# GATES LEFT: 319
EXECUTING GATE: t OR s -> u
CREATING WIRE: u with value : 0
---
# GATES LEFT: 318
EXECUTING GATE: u LSHIFT 1 -> ao
CREATING WIRE: ao with value : 0
---
# GATES LEFT: 317
EXECUTING GATE: s LSHIFT 15 -> w
CREATING WIRE: w with value : 0
---
# GATES LEFT: 316
EXECUTING GATE: v OR w -> x
CREATING WIRE: x with value : 8038
---
# GATES LEFT: 315
EXECUTING GATE: x RSHIFT 1 -> aq
CREATING WIRE: aq with value : 4019
---
# GATES LEFT: 314
EXECUTING GATE: x RSHIFT 5 -> aa
CREATING WIRE: aa with value : 251
---
# GATES LEFT: 313
EXECUTING GATE: x RSHIFT 2 -> y
CREATING WIRE: y with value : 2009
---
# GATES LEFT: 312
EXECUTING GATE: x RSHIFT 3 -> z
CREATING WIRE: z with value : 1004
---
# GATES LEFT: 311
EXECUTING GATE: z OR aa -> ab
CREATING WIRE: ab with value : 1023
---
# GATES LEFT: 310
EXECUTING GATE: z AND aa -> ac
CREATING WIRE: ac with value : 232
---
# GATES LEFT: 309
EXECUTING GATE: NOT ac -> ad
CREATING WIRE: ad with value : 65303
---
# GATES LEFT: 308
EXECUTING GATE: ab AND ad -> ae
CREATING WIRE: ae with value : 791
---
# GATES LEFT: 307
EXECUTING GATE: y AND ae -> ag
CREATING WIRE: ag with value : 785
---
# GATES LEFT: 306
EXECUTING GATE: NOT ag -> ah
CREATING WIRE: ah with value : 64750
---
# GATES LEFT: 305
EXECUTING GATE: y OR ae -> af
CREATING WIRE: af with value : 2015
---
# GATES LEFT: 304
EXECUTING GATE: af AND ah -> ai
CREATING WIRE: ai with value : 1230
---
# GATES LEFT: 303
EXECUTING GATE: x AND ai -> ak
CREATING WIRE: ak with value : 1094
---
# GATES LEFT: 302
EXECUTING GATE: x OR ai -> aj
CREATING WIRE: aj with value : 8174
---
# GATES LEFT: 301
EXECUTING GATE: NOT ak -> al
CREATING WIRE: al with value : 64441
---
# GATES LEFT: 300
EXECUTING GATE: aj AND al -> am
CREATING WIRE: am with value : 7080
---
# GATES LEFT: 299
EXECUTING GATE: 1 AND am -> an
CREATING WIRE: an with value : 0
---
# GATES LEFT: 298
EXECUTING GATE: ao OR an -> ap
CREATING WIRE: ap with value : 0
---
# GATES LEFT: 297
EXECUTING GATE: ap LSHIFT 1 -> bj
CREATING WIRE: bj with value : 0
---
# GATES LEFT: 296
EXECUTING GATE: an LSHIFT 15 -> ar
CREATING WIRE: ar with value : 0
---
# GATES LEFT: 295
EXECUTING GATE: aq OR ar -> as
CREATING WIRE: as with value : 4019
---
# GATES LEFT: 294
EXECUTING GATE: as RSHIFT 1 -> bl
CREATING WIRE: bl with value : 2009
---
# GATES LEFT: 293
EXECUTING GATE: as RSHIFT 5 -> av
CREATING WIRE: av with value : 125
---
# GATES LEFT: 292
EXECUTING GATE: as RSHIFT 2 -> at
CREATING WIRE: at with value : 1004
---
# GATES LEFT: 291
EXECUTING GATE: as RSHIFT 3 -> au
CREATING WIRE: au with value : 502
---
# GATES LEFT: 290
EXECUTING GATE: au AND av -> ax
CREATING WIRE: ax with value : 116
---
# GATES LEFT: 289
EXECUTING GATE: NOT ax -> ay
CREATING WIRE: ay with value : 65419
---
# GATES LEFT: 288
EXECUTING GATE: au OR av -> aw
CREATING WIRE: aw with value : 511
---
# GATES LEFT: 287
EXECUTING GATE: aw AND ay -> az
CREATING WIRE: az with value : 395
---
# GATES LEFT: 286
EXECUTING GATE: at AND az -> bb
CREATING WIRE: bb with value : 392
---
# GATES LEFT: 285
EXECUTING GATE: at OR az -> ba
CREATING WIRE: ba with value : 1007
---
# GATES LEFT: 284
EXECUTING GATE: NOT bb -> bc
CREATING WIRE: bc with value : 65143
---
# GATES LEFT: 283
EXECUTING GATE: ba AND bc -> bd
CREATING WIRE: bd with value : 615
---
# GATES LEFT: 282
EXECUTING GATE: as OR bd -> be
CREATING WIRE: be with value : 4087
---
# GATES LEFT: 281
EXECUTING GATE: as AND bd -> bf
CREATING WIRE: bf with value : 547
---
# GATES LEFT: 280
EXECUTING GATE: NOT bf -> bg
CREATING WIRE: bg with value : 64988
---
# GATES LEFT: 279
EXECUTING GATE: be AND bg -> bh
CREATING WIRE: bh with value : 3540
---
# GATES LEFT: 278
EXECUTING GATE: 1 AND bh -> bi
CREATING WIRE: bi with value : 0
---
# GATES LEFT: 277
EXECUTING GATE: bi LSHIFT 15 -> bm
CREATING WIRE: bm with value : 0
---
# GATES LEFT: 276
EXECUTING GATE: bl OR bm -> bn
CREATING WIRE: bn with value : 2009
---
# GATES LEFT: 275
EXECUTING GATE: bn RSHIFT 3 -> bp
CREATING WIRE: bp with value : 251
---
# GATES LEFT: 274
EXECUTING GATE: bn RSHIFT 1 -> cg
CREATING WIRE: cg with value : 1004
---
# GATES LEFT: 273
EXECUTING GATE: bn RSHIFT 2 -> bo
CREATING WIRE: bo with value : 502
---
# GATES LEFT: 272
EXECUTING GATE: bj OR bi -> bk
CREATING WIRE: bk with value : 0
---
# GATES LEFT: 271
EXECUTING GATE: bk LSHIFT 1 -> ce
CREATING WIRE: ce with value : 0
---
# GATES LEFT: 270
EXECUTING GATE: bn RSHIFT 5 -> bq
CREATING WIRE: bq with value : 62
---
# GATES LEFT: 269
EXECUTING GATE: bp OR bq -> br
CREATING WIRE: br with value : 255
---
# GATES LEFT: 268
EXECUTING GATE: bp AND bq -> bs
CREATING WIRE: bs with value : 58
---
# GATES LEFT: 267
EXECUTING GATE: NOT bs -> bt
CREATING WIRE: bt with value : 65477
---
# GATES LEFT: 266
EXECUTING GATE: br AND bt -> bu
CREATING WIRE: bu with value : 197
---
# GATES LEFT: 265
EXECUTING GATE: bo OR bu -> bv
CREATING WIRE: bv with value : 503
---
# GATES LEFT: 264
EXECUTING GATE: bo AND bu -> bw
CREATING WIRE: bw with value : 196
---
# GATES LEFT: 263
EXECUTING GATE: NOT bw -> bx
CREATING WIRE: bx with value : 65339
---
# GATES LEFT: 262
EXECUTING GATE: bv AND bx -> by
CREATING WIRE: by with value : 307
---
# GATES LEFT: 261
EXECUTING GATE: bn AND by -> ca
CREATING WIRE: ca with value : 273
---
# GATES LEFT: 260
EXECUTING GATE: NOT ca -> cb
CREATING WIRE: cb with value : 65262
---
# GATES LEFT: 259
EXECUTING GATE: bn OR by -> bz
CREATING WIRE: bz with value : 2043
---
# GATES LEFT: 258
EXECUTING GATE: bz AND cb -> cc
CREATING WIRE: cc with value : 1770
---
# GATES LEFT: 257
EXECUTING GATE: 1 AND cc -> cd
CREATING WIRE: cd with value : 0
---
# GATES LEFT: 256
EXECUTING GATE: ce OR cd -> cf
CREATING WIRE: cf with value : 0
---
# GATES LEFT: 255
EXECUTING GATE: cd LSHIFT 15 -> ch
CREATING WIRE: ch with value : 0
---
# GATES LEFT: 254
EXECUTING GATE: cg OR ch -> ci
CREATING WIRE: ci with value : 1004
---
# GATES LEFT: 253
EXECUTING GATE: ci RSHIFT 3 -> ck
CREATING WIRE: ck with value : 125
---
# GATES LEFT: 252
EXECUTING GATE: ci RSHIFT 1 -> db
CREATING WIRE: db with value : 502
---
# GATES LEFT: 251
EXECUTING GATE: cf LSHIFT 1 -> cz
CREATING WIRE: cz with value : 0
---
# GATES LEFT: 250
EXECUTING GATE: ci RSHIFT 5 -> cl
CREATING WIRE: cl with value : 31
---
# GATES LEFT: 249
EXECUTING GATE: ck AND cl -> cn
CREATING WIRE: cn with value : 29
---
# GATES LEFT: 248
EXECUTING GATE: NOT cn -> co
CREATING WIRE: co with value : 65506
---
# GATES LEFT: 247
EXECUTING GATE: ck OR cl -> cm
CREATING WIRE: cm with value : 127
---
# GATES LEFT: 246
EXECUTING GATE: cm AND co -> cp
CREATING WIRE: cp with value : 98
---
# GATES LEFT: 245
EXECUTING GATE: ci RSHIFT 2 -> cj
CREATING WIRE: cj with value : 251
---
# GATES LEFT: 244
EXECUTING GATE: cj AND cp -> cr
CREATING WIRE: cr with value : 98
---
# GATES LEFT: 243
EXECUTING GATE: cj OR cp -> cq
CREATING WIRE: cq with value : 251
---
# GATES LEFT: 242
EXECUTING GATE: NOT cr -> cs
CREATING WIRE: cs with value : 65437
---
# GATES LEFT: 241
EXECUTING GATE: cq AND cs -> ct
CREATING WIRE: ct with value : 153
---
# GATES LEFT: 240
EXECUTING GATE: ci AND ct -> cv
CREATING WIRE: cv with value : 136
---
# GATES LEFT: 239
EXECUTING GATE: NOT cv -> cw
CREATING WIRE: cw with value : 65399
---
# GATES LEFT: 238
EXECUTING GATE: ci OR ct -> cu
CREATING WIRE: cu with value : 1021
---
# GATES LEFT: 237
EXECUTING GATE: cu AND cw -> cx
CREATING WIRE: cx with value : 885
---
# GATES LEFT: 236
EXECUTING GATE: 1 AND cx -> cy
CREATING WIRE: cy with value : 1
---
# GATES LEFT: 235
EXECUTING GATE: cy LSHIFT 15 -> dc
CREATING WIRE: dc with value : 32768
---
# GATES LEFT: 234
EXECUTING GATE: db OR dc -> dd
CREATING WIRE: dd with value : 33270
---
# GATES LEFT: 233
EXECUTING GATE: dd RSHIFT 3 -> df
CREATING WIRE: df with value : 4158
---
# GATES LEFT: 232
EXECUTING GATE: dd RSHIFT 2 -> de
CREATING WIRE: de with value : 8317
---
# GATES LEFT: 231
EXECUTING GATE: dd RSHIFT 1 -> dw
CREATING WIRE: dw with value : 16635
---
# GATES LEFT: 230
EXECUTING GATE: cz OR cy -> da
CREATING WIRE: da with value : 1
---
# GATES LEFT: 229
EXECUTING GATE: da LSHIFT 1 -> du
CREATING WIRE: du with value : 2
---
# GATES LEFT: 228
EXECUTING GATE: dd RSHIFT 5 -> dg
CREATING WIRE: dg with value : 1039
---
# GATES LEFT: 227
EXECUTING GATE: df AND dg -> di
CREATING WIRE: di with value : 14
---
# GATES LEFT: 226
EXECUTING GATE: NOT di -> dj
CREATING WIRE: dj with value : 65521
---
# GATES LEFT: 225
EXECUTING GATE: df OR dg -> dh
CREATING WIRE: dh with value : 5183
---
# GATES LEFT: 224
EXECUTING GATE: dh AND dj -> dk
CREATING WIRE: dk with value : 5169
---
# GATES LEFT: 223
EXECUTING GATE: de OR dk -> dl
CREATING WIRE: dl with value : 13437
---
# GATES LEFT: 222
EXECUTING GATE: de AND dk -> dm
CREATING WIRE: dm with value : 49
---
# GATES LEFT: 221
EXECUTING GATE: NOT dm -> dn
CREATING WIRE: dn with value : 65486
---
# GATES LEFT: 220
EXECUTING GATE: dl AND dn -> do
CREATING WIRE: do with value : 13388
---
# GATES LEFT: 219
EXECUTING GATE: dd OR do -> dp
CREATING WIRE: dp with value : 46590
---
# GATES LEFT: 218
EXECUTING GATE: dd AND do -> dq
CREATING WIRE: dq with value : 68
---
# GATES LEFT: 217
EXECUTING GATE: NOT dq -> dr
CREATING WIRE: dr with value : 65467
---
# GATES LEFT: 216
EXECUTING GATE: dp AND dr -> ds
CREATING WIRE: ds with value : 46522
---
# GATES LEFT: 215
EXECUTING GATE: 1 AND ds -> dt
CREATING WIRE: dt with value : 0
---
# GATES LEFT: 214
EXECUTING GATE: dt LSHIFT 15 -> dx
CREATING WIRE: dx with value : 0
---
# GATES LEFT: 213
EXECUTING GATE: dw OR dx -> dy
CREATING WIRE: dy with value : 16635
---
# GATES LEFT: 212
EXECUTING GATE: dy RSHIFT 1 -> er
CREATING WIRE: er with value : 8317
---
# GATES LEFT: 211
EXECUTING GATE: dy RSHIFT 2 -> dz
CREATING WIRE: dz with value : 4158
---
# GATES LEFT: 210
EXECUTING GATE: dy RSHIFT 5 -> eb
CREATING WIRE: eb with value : 519
---
# GATES LEFT: 209
EXECUTING GATE: dy RSHIFT 3 -> ea
CREATING WIRE: ea with value : 2079
---
# GATES LEFT: 208
EXECUTING GATE: ea AND eb -> ed
CREATING WIRE: ed with value : 7
---
# GATES LEFT: 207
EXECUTING GATE: ea OR eb -> ec
CREATING WIRE: ec with value : 2591
---
# GATES LEFT: 206
EXECUTING GATE: NOT ed -> ee
CREATING WIRE: ee with value : 65528
---
# GATES LEFT: 205
EXECUTING GATE: ec AND ee -> ef
CREATING WIRE: ef with value : 2584
---
# GATES LEFT: 204
EXECUTING GATE: dz OR ef -> eg
CREATING WIRE: eg with value : 6718
---
# GATES LEFT: 203
EXECUTING GATE: dz AND ef -> eh
CREATING WIRE: eh with value : 24
---
# GATES LEFT: 202
EXECUTING GATE: NOT eh -> ei
CREATING WIRE: ei with value : 65511
---
# GATES LEFT: 201
EXECUTING GATE: eg AND ei -> ej
CREATING WIRE: ej with value : 6694
---
# GATES LEFT: 200
EXECUTING GATE: dy OR ej -> ek
CREATING WIRE: ek with value : 23295
---
# GATES LEFT: 199
EXECUTING GATE: dy AND ej -> el
CREATING WIRE: el with value : 34
---
# GATES LEFT: 198
EXECUTING GATE: NOT el -> em
CREATING WIRE: em with value : 65501
---
# GATES LEFT: 197
EXECUTING GATE: ek AND em -> en
CREATING WIRE: en with value : 23261
---
# GATES LEFT: 196
EXECUTING GATE: 1 AND en -> eo
CREATING WIRE: eo with value : 1
---
# GATES LEFT: 195
EXECUTING GATE: eo LSHIFT 15 -> es
CREATING WIRE: es with value : 32768
---
# GATES LEFT: 194
EXECUTING GATE: er OR es -> et
CREATING WIRE: et with value : 41085
---
# GATES LEFT: 193
EXECUTING GATE: et RSHIFT 2 -> eu
CREATING WIRE: eu with value : 10271
---
# GATES LEFT: 192
EXECUTING GATE: et RSHIFT 1 -> fm
CREATING WIRE: fm with value : 20542
---
# GATES LEFT: 191
EXECUTING GATE: et RSHIFT 5 -> ew
CREATING WIRE: ew with value : 1283
---
# GATES LEFT: 190
EXECUTING GATE: et RSHIFT 3 -> ev
CREATING WIRE: ev with value : 5135
---
# GATES LEFT: 189
EXECUTING GATE: ev OR ew -> ex
CREATING WIRE: ex with value : 5391
---
# GATES LEFT: 188
EXECUTING GATE: ev AND ew -> ey
CREATING WIRE: ey with value : 1027
---
# GATES LEFT: 187
EXECUTING GATE: NOT ey -> ez
CREATING WIRE: ez with value : 64508
---
# GATES LEFT: 186
EXECUTING GATE: ex AND ez -> fa
CREATING WIRE: fa with value : 4364
---
# GATES LEFT: 185
EXECUTING GATE: eu AND fa -> fc
CREATING WIRE: fc with value : 12
---
# GATES LEFT: 184
EXECUTING GATE: eu OR fa -> fb
CREATING WIRE: fb with value : 14623
---
# GATES LEFT: 183
EXECUTING GATE: NOT fc -> fd
CREATING WIRE: fd with value : 65523
---
# GATES LEFT: 182
EXECUTING GATE: fb AND fd -> fe
CREATING WIRE: fe with value : 14611
---
# GATES LEFT: 181
EXECUTING GATE: et OR fe -> ff
CREATING WIRE: ff with value : 47487
---
# GATES LEFT: 180
EXECUTING GATE: et AND fe -> fg
CREATING WIRE: fg with value : 8209
---
# GATES LEFT: 179
EXECUTING GATE: NOT fg -> fh
CREATING WIRE: fh with value : 57326
---
# GATES LEFT: 178
EXECUTING GATE: ff AND fh -> fi
CREATING WIRE: fi with value : 39278
---
# GATES LEFT: 177
EXECUTING GATE: 1 AND fi -> fj
CREATING WIRE: fj with value : 0
---
# GATES LEFT: 176
EXECUTING GATE: fj LSHIFT 15 -> fn
CREATING WIRE: fn with value : 0
---
# GATES LEFT: 175
EXECUTING GATE: fm OR fn -> fo
CREATING WIRE: fo with value : 20542
---
# GATES LEFT: 174
EXECUTING GATE: fo RSHIFT 2 -> fp
CREATING WIRE: fp with value : 5135
---
# GATES LEFT: 173
EXECUTING GATE: fo RSHIFT 3 -> fq
CREATING WIRE: fq with value : 2567
---
# GATES LEFT: 172
EXECUTING GATE: fo RSHIFT 1 -> gh
CREATING WIRE: gh with value : 10271
---
# GATES LEFT: 171
EXECUTING GATE: du OR dt -> dv
CREATING WIRE: dv with value : 2
---
# GATES LEFT: 170
EXECUTING GATE: dv LSHIFT 1 -> ep
CREATING WIRE: ep with value : 4
---
# GATES LEFT: 169
EXECUTING GATE: ep OR eo -> eq
CREATING WIRE: eq with value : 5
---
# GATES LEFT: 168
EXECUTING GATE: eq LSHIFT 1 -> fk
CREATING WIRE: fk with value : 10
---
# GATES LEFT: 167
EXECUTING GATE: fk OR fj -> fl
CREATING WIRE: fl with value : 10
---
# GATES LEFT: 166
EXECUTING GATE: fl LSHIFT 1 -> gf
CREATING WIRE: gf with value : 20
---
# GATES LEFT: 165
EXECUTING GATE: fo RSHIFT 5 -> fr
CREATING WIRE: fr with value : 641
---
# GATES LEFT: 164
EXECUTING GATE: fq AND fr -> ft
CREATING WIRE: ft with value : 513
---
# GATES LEFT: 163
EXECUTING GATE: NOT ft -> fu
CREATING WIRE: fu with value : 65022
---
# GATES LEFT: 162
EXECUTING GATE: fq OR fr -> fs
CREATING WIRE: fs with value : 2695
---
# GATES LEFT: 161
EXECUTING GATE: fs AND fu -> fv
CREATING WIRE: fv with value : 2182
---
# GATES LEFT: 160
EXECUTING GATE: fp AND fv -> fx
CREATING WIRE: fx with value : 6
---
# GATES LEFT: 159
EXECUTING GATE: NOT fx -> fy
CREATING WIRE: fy with value : 65529
---
# GATES LEFT: 158
EXECUTING GATE: fp OR fv -> fw
CREATING WIRE: fw with value : 7311
---
# GATES LEFT: 157
EXECUTING GATE: fw AND fy -> fz
CREATING WIRE: fz with value : 7305
---
# GATES LEFT: 156
EXECUTING GATE: fo OR fz -> ga
CREATING WIRE: ga with value : 23743
---
# GATES LEFT: 155
EXECUTING GATE: fo AND fz -> gb
CREATING WIRE: gb with value : 4104
---
# GATES LEFT: 154
EXECUTING GATE: NOT gb -> gc
CREATING WIRE: gc with value : 61431
---
# GATES LEFT: 153
EXECUTING GATE: ga AND gc -> gd
CREATING WIRE: gd with value : 19639
---
# GATES LEFT: 152
EXECUTING GATE: 1 AND gd -> ge
CREATING WIRE: ge with value : 1
---
# GATES LEFT: 151
EXECUTING GATE: gf OR ge -> gg
CREATING WIRE: gg with value : 21
---
# GATES LEFT: 150
EXECUTING GATE: ge LSHIFT 15 -> gi
CREATING WIRE: gi with value : 32768
---
# GATES LEFT: 149
EXECUTING GATE: gg LSHIFT 1 -> ha
CREATING WIRE: ha with value : 42
---
# GATES LEFT: 148
EXECUTING GATE: gh OR gi -> gj
CREATING WIRE: gj with value : 43039
---
# GATES LEFT: 147
EXECUTING GATE: gj RSHIFT 1 -> hc
CREATING WIRE: hc with value : 21519
---
# GATES LEFT: 146
EXECUTING GATE: gj RSHIFT 5 -> gm
CREATING WIRE: gm with value : 1344
---
# GATES LEFT: 145
EXECUTING GATE: gj RSHIFT 2 -> gk
CREATING WIRE: gk with value : 10759
---
# GATES LEFT: 144
EXECUTING GATE: gj RSHIFT 3 -> gl
CREATING WIRE: gl with value : 5379
---
# GATES LEFT: 143
EXECUTING GATE: gl OR gm -> gn
CREATING WIRE: gn with value : 5443
---
# GATES LEFT: 142
EXECUTING GATE: gl AND gm -> go
CREATING WIRE: go with value : 1280
---
# GATES LEFT: 141
EXECUTING GATE: NOT go -> gp
CREATING WIRE: gp with value : 64255
---
# GATES LEFT: 140
EXECUTING GATE: gn AND gp -> gq
CREATING WIRE: gq with value : 4163
---
# GATES LEFT: 139
EXECUTING GATE: gk OR gq -> gr
CREATING WIRE: gr with value : 14919
---
# GATES LEFT: 138
EXECUTING GATE: gk AND gq -> gs
CREATING WIRE: gs with value : 3
---
# GATES LEFT: 137
EXECUTING GATE: NOT gs -> gt
CREATING WIRE: gt with value : 65532
---
# GATES LEFT: 136
EXECUTING GATE: gr AND gt -> gu
CREATING WIRE: gu with value : 14916
---
# GATES LEFT: 135
EXECUTING GATE: gj AND gu -> gw
CREATING WIRE: gw with value : 10244
---
# GATES LEFT: 134
EXECUTING GATE: NOT gw -> gx
CREATING WIRE: gx with value : 55291
---
# GATES LEFT: 133
EXECUTING GATE: gj OR gu -> gv
CREATING WIRE: gv with value : 47711
---
# GATES LEFT: 132
EXECUTING GATE: gv AND gx -> gy
CREATING WIRE: gy with value : 37467
---
# GATES LEFT: 131
EXECUTING GATE: 1 AND gy -> gz
CREATING WIRE: gz with value : 1
---
# GATES LEFT: 130
EXECUTING GATE: gz LSHIFT 15 -> hd
CREATING WIRE: hd with value : 32768
---
# GATES LEFT: 129
EXECUTING GATE: ha OR gz -> hb
CREATING WIRE: hb with value : 43
---
# GATES LEFT: 128
EXECUTING GATE: hc OR hd -> he
CREATING WIRE: he with value : 54287
---
# GATES LEFT: 127
EXECUTING GATE: he RSHIFT 3 -> hg
CREATING WIRE: hg with value : 6785
---
# GATES LEFT: 126
EXECUTING GATE: he RSHIFT 2 -> hf
CREATING WIRE: hf with value : 13571
---
# GATES LEFT: 125
EXECUTING GATE: he RSHIFT 1 -> hx
CREATING WIRE: hx with value : 27143
---
# GATES LEFT: 124
EXECUTING GATE: hb LSHIFT 1 -> hv
CREATING WIRE: hv with value : 86
---
# GATES LEFT: 123
EXECUTING GATE: he RSHIFT 5 -> hh
CREATING WIRE: hh with value : 1696
---
# GATES LEFT: 122
EXECUTING GATE: hg OR hh -> hi
CREATING WIRE: hi with value : 7841
---
# GATES LEFT: 121
EXECUTING GATE: hg AND hh -> hj
CREATING WIRE: hj with value : 640
---
# GATES LEFT: 120
EXECUTING GATE: NOT hj -> hk
CREATING WIRE: hk with value : 64895
---
# GATES LEFT: 119
EXECUTING GATE: hi AND hk -> hl
CREATING WIRE: hl with value : 7201
---
# GATES LEFT: 118
EXECUTING GATE: hf OR hl -> hm
CREATING WIRE: hm with value : 15651
---
# GATES LEFT: 117
EXECUTING GATE: hf AND hl -> hn
CREATING WIRE: hn with value : 5121
---
# GATES LEFT: 116
EXECUTING GATE: NOT hn -> ho
CREATING WIRE: ho with value : 60414
---
# GATES LEFT: 115
EXECUTING GATE: hm AND ho -> hp
CREATING WIRE: hp with value : 10530
---
# GATES LEFT: 114
EXECUTING GATE: he OR hp -> hq
CREATING WIRE: hq with value : 64815
---
# GATES LEFT: 113
EXECUTING GATE: he AND hp -> hr
CREATING WIRE: hr with value : 2
---
# GATES LEFT: 112
EXECUTING GATE: NOT hr -> hs
CREATING WIRE: hs with value : 65533
---
# GATES LEFT: 111
EXECUTING GATE: hq AND hs -> ht
CREATING WIRE: ht with value : 64813
---
# GATES LEFT: 110
EXECUTING GATE: 1 AND ht -> hu
CREATING WIRE: hu with value : 1
---
# GATES LEFT: 109
EXECUTING GATE: hv OR hu -> hw
CREATING WIRE: hw with value : 87
---
# GATES LEFT: 108
EXECUTING GATE: hu LSHIFT 15 -> hy
CREATING WIRE: hy with value : 32768
---
# GATES LEFT: 107
EXECUTING GATE: hw LSHIFT 1 -> iq
CREATING WIRE: iq with value : 174
---
# GATES LEFT: 106
EXECUTING GATE: hx OR hy -> hz
CREATING WIRE: hz with value : 59911
---
# GATES LEFT: 105
EXECUTING GATE: hz RSHIFT 2 -> ia
CREATING WIRE: ia with value : 14977
---
# GATES LEFT: 104
EXECUTING GATE: hz RSHIFT 3 -> ib
CREATING WIRE: ib with value : 7488
---
# GATES LEFT: 103
EXECUTING GATE: hz RSHIFT 1 -> is
CREATING WIRE: is with value : 29955
---
# GATES LEFT: 102
EXECUTING GATE: hz RSHIFT 5 -> ic
CREATING WIRE: ic with value : 1872
---
# GATES LEFT: 101
EXECUTING GATE: ib OR ic -> id
CREATING WIRE: id with value : 8016
---
# GATES LEFT: 100
EXECUTING GATE: ib AND ic -> ie
CREATING WIRE: ie with value : 1344
---
# GATES LEFT: 99
EXECUTING GATE: NOT ie -> if
CREATING WIRE: if with value : 64191
---
# GATES LEFT: 98
EXECUTING GATE: id AND if -> ig
CREATING WIRE: ig with value : 6672
---
# GATES LEFT: 97
EXECUTING GATE: ia AND ig -> ii
CREATING WIRE: ii with value : 6656
---
# GATES LEFT: 96
EXECUTING GATE: NOT ii -> ij
CREATING WIRE: ij with value : 58879
---
# GATES LEFT: 95
EXECUTING GATE: ia OR ig -> ih
CREATING WIRE: ih with value : 14993
---
# GATES LEFT: 94
EXECUTING GATE: ih AND ij -> ik
CREATING WIRE: ik with value : 8337
---
# GATES LEFT: 93
EXECUTING GATE: hz OR ik -> il
CREATING WIRE: il with value : 60055
---
# GATES LEFT: 92
EXECUTING GATE: hz AND ik -> im
CREATING WIRE: im with value : 8193
---
# GATES LEFT: 91
EXECUTING GATE: NOT im -> in
CREATING WIRE: in with value : 57342
---
# GATES LEFT: 90
EXECUTING GATE: il AND in -> io
CREATING WIRE: io with value : 51862
---
# GATES LEFT: 89
EXECUTING GATE: 1 AND io -> ip
CREATING WIRE: ip with value : 0
---
# GATES LEFT: 88
EXECUTING GATE: ip LSHIFT 15 -> it
CREATING WIRE: it with value : 0
---
# GATES LEFT: 87
EXECUTING GATE: is OR it -> iu
CREATING WIRE: iu with value : 29955
---
# GATES LEFT: 86
EXECUTING GATE: iu RSHIFT 1 -> jn
CREATING WIRE: jn with value : 14977
---
# GATES LEFT: 85
EXECUTING GATE: iu RSHIFT 3 -> iw
CREATING WIRE: iw with value : 3744
---
# GATES LEFT: 84
EXECUTING GATE: iu RSHIFT 2 -> iv
CREATING WIRE: iv with value : 7488
---
# GATES LEFT: 83
EXECUTING GATE: iu RSHIFT 5 -> ix
CREATING WIRE: ix with value : 936
---
# GATES LEFT: 82
EXECUTING GATE: iw OR ix -> iy
CREATING WIRE: iy with value : 4008
---
# GATES LEFT: 81
EXECUTING GATE: iw AND ix -> iz
CREATING WIRE: iz with value : 672
---
# GATES LEFT: 80
EXECUTING GATE: NOT iz -> ja
CREATING WIRE: ja with value : 64863
---
# GATES LEFT: 79
EXECUTING GATE: iy AND ja -> jb
CREATING WIRE: jb with value : 3336
---
# GATES LEFT: 78
EXECUTING GATE: iv OR jb -> jc
CREATING WIRE: jc with value : 7496
---
# GATES LEFT: 77
EXECUTING GATE: iv AND jb -> jd
CREATING WIRE: jd with value : 3328
---
# GATES LEFT: 76
EXECUTING GATE: NOT jd -> je
CREATING WIRE: je with value : 62207
---
# GATES LEFT: 75
EXECUTING GATE: jc AND je -> jf
CREATING WIRE: jf with value : 4168
---
# GATES LEFT: 74
EXECUTING GATE: iu AND jf -> jh
CREATING WIRE: jh with value : 4096
---
# GATES LEFT: 73
EXECUTING GATE: NOT jh -> ji
CREATING WIRE: ji with value : 61439
---
# GATES LEFT: 72
EXECUTING GATE: iu OR jf -> jg
CREATING WIRE: jg with value : 30027
---
# GATES LEFT: 71
EXECUTING GATE: jg AND ji -> jj
CREATING WIRE: jj with value : 25931
---
# GATES LEFT: 70
EXECUTING GATE: 1 AND jj -> jk
CREATING WIRE: jk with value : 1
---
# GATES LEFT: 69
EXECUTING GATE: jk LSHIFT 15 -> jo
CREATING WIRE: jo with value : 32768
---
# GATES LEFT: 68
EXECUTING GATE: jn OR jo -> jp
CREATING WIRE: jp with value : 47745
---
# GATES LEFT: 67
EXECUTING GATE: jp RSHIFT 2 -> jq
CREATING WIRE: jq with value : 11936
---
# GATES LEFT: 66
EXECUTING GATE: jp RSHIFT 5 -> js
CREATING WIRE: js with value : 1492
---
# GATES LEFT: 65
EXECUTING GATE: jp RSHIFT 1 -> ki
CREATING WIRE: ki with value : 23872
---
# GATES LEFT: 64
EXECUTING GATE: jp RSHIFT 3 -> jr
CREATING WIRE: jr with value : 5968
---
# GATES LEFT: 63
EXECUTING GATE: jr AND js -> ju
CREATING WIRE: ju with value : 1360
---
# GATES LEFT: 62
EXECUTING GATE: NOT ju -> jv
CREATING WIRE: jv with value : 64175
---
# GATES LEFT: 61
EXECUTING GATE: iq OR ip -> ir
CREATING WIRE: ir with value : 174
---
# GATES LEFT: 60
EXECUTING GATE: ir LSHIFT 1 -> jl
CREATING WIRE: jl with value : 348
---
# GATES LEFT: 59
EXECUTING GATE: jl OR jk -> jm
CREATING WIRE: jm with value : 349
---
# GATES LEFT: 58
EXECUTING GATE: jm LSHIFT 1 -> kg
CREATING WIRE: kg with value : 698
---
# GATES LEFT: 57
EXECUTING GATE: jr OR js -> jt
CREATING WIRE: jt with value : 6100
---
# GATES LEFT: 56
EXECUTING GATE: jt AND jv -> jw
CREATING WIRE: jw with value : 4740
---
# GATES LEFT: 55
EXECUTING GATE: jq OR jw -> jx
CREATING WIRE: jx with value : 16036
---
# GATES LEFT: 54
EXECUTING GATE: jq AND jw -> jy
CREATING WIRE: jy with value : 640
---
# GATES LEFT: 53
EXECUTING GATE: NOT jy -> jz
CREATING WIRE: jz with value : 64895
---
# GATES LEFT: 52
EXECUTING GATE: jx AND jz -> ka
CREATING WIRE: ka with value : 15396
---
# GATES LEFT: 51
EXECUTING GATE: jp OR ka -> kb
CREATING WIRE: kb with value : 48805
---
# GATES LEFT: 50
EXECUTING GATE: jp AND ka -> kc
CREATING WIRE: kc with value : 14336
---
# GATES LEFT: 49
EXECUTING GATE: NOT kc -> kd
CREATING WIRE: kd with value : 51199
---
# GATES LEFT: 48
EXECUTING GATE: kb AND kd -> ke
CREATING WIRE: ke with value : 34469
---
# GATES LEFT: 47
EXECUTING GATE: 1 AND ke -> kf
CREATING WIRE: kf with value : 1
---
# GATES LEFT: 46
EXECUTING GATE: kg OR kf -> kh
CREATING WIRE: kh with value : 699
---
# GATES LEFT: 45
EXECUTING GATE: kh LSHIFT 1 -> lb
CREATING WIRE: lb with value : 1398
---
# GATES LEFT: 44
EXECUTING GATE: kf LSHIFT 15 -> kj
CREATING WIRE: kj with value : 32768
---
# GATES LEFT: 43
EXECUTING GATE: ki OR kj -> kk
CREATING WIRE: kk with value : 56640
---
# GATES LEFT: 42
EXECUTING GATE: kk RSHIFT 2 -> kl
CREATING WIRE: kl with value : 14160
---
# GATES LEFT: 41
EXECUTING GATE: kk RSHIFT 3 -> km
CREATING WIRE: km with value : 7080
---
# GATES LEFT: 40
EXECUTING GATE: kk RSHIFT 5 -> kn
CREATING WIRE: kn with value : 1770
---
# GATES LEFT: 39
EXECUTING GATE: km AND kn -> kp
CREATING WIRE: kp with value : 680
---
# GATES LEFT: 38
EXECUTING GATE: NOT kp -> kq
CREATING WIRE: kq with value : 64855
---
# GATES LEFT: 37
EXECUTING GATE: km OR kn -> ko
CREATING WIRE: ko with value : 8170
---
# GATES LEFT: 36
EXECUTING GATE: ko AND kq -> kr
CREATING WIRE: kr with value : 7490
---
# GATES LEFT: 35
EXECUTING GATE: kl OR kr -> ks
CREATING WIRE: ks with value : 16210
---
# GATES LEFT: 34
EXECUTING GATE: kl AND kr -> kt
CREATING WIRE: kt with value : 5440
---
# GATES LEFT: 33
EXECUTING GATE: NOT kt -> ku
CREATING WIRE: ku with value : 60095
---
# GATES LEFT: 32
EXECUTING GATE: ks AND ku -> kv
CREATING WIRE: kv with value : 10770
---
# GATES LEFT: 31
EXECUTING GATE: kk AND kv -> kx
CREATING WIRE: kx with value : 2048
---
# GATES LEFT: 30
EXECUTING GATE: NOT kx -> ky
CREATING WIRE: ky with value : 63487
---
# GATES LEFT: 29
EXECUTING GATE: kk OR kv -> kw
CREATING WIRE: kw with value : 65362
---
# GATES LEFT: 28
EXECUTING GATE: kw AND ky -> kz
CREATING WIRE: kz with value : 63314
---
# GATES LEFT: 27
EXECUTING GATE: 1 AND kz -> la
CREATING WIRE: la with value : 0
---
# GATES LEFT: 26
EXECUTING GATE: lb OR la -> lc
CREATING WIRE: lc with value : 1398
---
# GATES LEFT: 25
EXECUTING GATE: lc LSHIFT 1 -> lw
CREATING WIRE: lw with value : 2796
---
# GATES LEFT: 24
EXECUTING GATE: kk RSHIFT 1 -> ld
CREATING WIRE: ld with value : 28320
---
# GATES LEFT: 23
EXECUTING GATE: la LSHIFT 15 -> le
CREATING WIRE: le with value : 0
---
# GATES LEFT: 22
EXECUTING GATE: ld OR le -> lf
CREATING WIRE: lf with value : 28320
---
# GATES LEFT: 21
EXECUTING GATE: lf RSHIFT 2 -> lg
CREATING WIRE: lg with value : 7080
---
# GATES LEFT: 20
EXECUTING GATE: lf RSHIFT 3 -> lh
CREATING WIRE: lh with value : 3540
---
# GATES LEFT: 19
EXECUTING GATE: lf RSHIFT 5 -> li
CREATING WIRE: li with value : 885
---
# GATES LEFT: 18
EXECUTING GATE: lh AND li -> lk
CREATING WIRE: lk with value : 340
---
# GATES LEFT: 17
EXECUTING GATE: NOT lk -> ll
CREATING WIRE: ll with value : 65195
---
# GATES LEFT: 16
EXECUTING GATE: lh OR li -> lj
CREATING WIRE: lj with value : 4085
---
# GATES LEFT: 15
EXECUTING GATE: lj AND ll -> lm
CREATING WIRE: lm with value : 3745
---
# GATES LEFT: 14
EXECUTING GATE: lg OR lm -> ln
CREATING WIRE: ln with value : 8105
---
# GATES LEFT: 13
EXECUTING GATE: lg AND lm -> lo
CREATING WIRE: lo with value : 2720
---
# GATES LEFT: 12
EXECUTING GATE: NOT lo -> lp
CREATING WIRE: lp with value : 62815
---
# GATES LEFT: 11
EXECUTING GATE: ln AND lp -> lq
CREATING WIRE: lq with value : 5385
---
# GATES LEFT: 10
EXECUTING GATE: lf AND lq -> ls
CREATING WIRE: ls with value : 1024
---
# GATES LEFT: 9
EXECUTING GATE: NOT ls -> lt
CREATING WIRE: lt with value : 64511
---
# GATES LEFT: 8
EXECUTING GATE: lf OR lq -> lr
CREATING WIRE: lr with value : 32681
---
# GATES LEFT: 7
EXECUTING GATE: lf RSHIFT 1 -> ly
CREATING WIRE: ly with value : 14160
---
# GATES LEFT: 6
EXECUTING GATE: lr AND lt -> lu
CREATING WIRE: lu with value : 31657
---
# GATES LEFT: 5
EXECUTING GATE: 1 AND lu -> lv
CREATING WIRE: lv with value : 1
---
# GATES LEFT: 4
EXECUTING GATE: lv LSHIFT 15 -> lz
CREATING WIRE: lz with value : 32768
---
# GATES LEFT: 3
EXECUTING GATE: ly OR lz -> ma
CREATING WIRE: ma with value : 46928
---
# GATES LEFT: 2
EXECUTING GATE: lw OR lv -> lx
CREATING WIRE: lx with value : 2797
---
# GATES LEFT: 1
EXECUTING GATE: WIRE lx -> a
CREATING WIRE: a with value : 2797
In [83]:
print ("a: ", wires['a'])
a: 2797
In [ ]:
Content source: djvanhelmond/AdventofCode2015
Similar notebooks: