Fucking day 24
This commit is contained in:
313
day24/data-2.txt
Normal file
313
day24/data-2.txt
Normal file
@ -0,0 +1,313 @@
|
||||
x00: 1
|
||||
x01: 1
|
||||
x02: 0
|
||||
x03: 0
|
||||
x04: 0
|
||||
x05: 1
|
||||
x06: 0
|
||||
x07: 1
|
||||
x08: 1
|
||||
x09: 0
|
||||
x10: 1
|
||||
x11: 0
|
||||
x12: 0
|
||||
x13: 0
|
||||
x14: 1
|
||||
x15: 1
|
||||
x16: 1
|
||||
x17: 0
|
||||
x18: 1
|
||||
x19: 1
|
||||
x20: 0
|
||||
x21: 0
|
||||
x22: 0
|
||||
x23: 0
|
||||
x24: 1
|
||||
x25: 1
|
||||
x26: 0
|
||||
x27: 0
|
||||
x28: 1
|
||||
x29: 1
|
||||
x30: 0
|
||||
x31: 1
|
||||
x32: 0
|
||||
x33: 0
|
||||
x34: 1
|
||||
x35: 1
|
||||
x36: 0
|
||||
x37: 0
|
||||
x38: 0
|
||||
x39: 0
|
||||
x40: 0
|
||||
x41: 0
|
||||
x42: 0
|
||||
x43: 1
|
||||
x44: 1
|
||||
y00: 1
|
||||
y01: 0
|
||||
y02: 1
|
||||
y03: 1
|
||||
y04: 0
|
||||
y05: 0
|
||||
y06: 1
|
||||
y07: 1
|
||||
y08: 0
|
||||
y09: 1
|
||||
y10: 1
|
||||
y11: 1
|
||||
y12: 1
|
||||
y13: 0
|
||||
y14: 1
|
||||
y15: 0
|
||||
y16: 0
|
||||
y17: 1
|
||||
y18: 1
|
||||
y19: 0
|
||||
y20: 1
|
||||
y21: 1
|
||||
y22: 1
|
||||
y23: 1
|
||||
y24: 0
|
||||
y25: 0
|
||||
y26: 0
|
||||
y27: 0
|
||||
y28: 1
|
||||
y29: 1
|
||||
y30: 0
|
||||
y31: 1
|
||||
y32: 1
|
||||
y33: 0
|
||||
y34: 0
|
||||
y35: 1
|
||||
y36: 0
|
||||
y37: 0
|
||||
y38: 0
|
||||
y39: 1
|
||||
y40: 0
|
||||
y41: 0
|
||||
y42: 1
|
||||
y43: 0
|
||||
y44: 1
|
||||
|
||||
fjm XOR gqp -> z14
|
||||
x18 XOR y18 -> hdn
|
||||
wbb AND vnp -> shd
|
||||
srq OR mpk -> cqw
|
||||
y30 AND x30 -> tjw
|
||||
x26 AND y26 -> qhf
|
||||
y10 XOR x10 -> nbd
|
||||
y43 XOR x43 -> swn
|
||||
sfj OR jks -> rkg
|
||||
y01 XOR x01 -> tct
|
||||
nsv XOR pjt -> z04
|
||||
dcq AND knt -> hfc
|
||||
hfh AND cjm -> jks
|
||||
hwv OR cpr -> ngm
|
||||
fsm AND btg -> nhn
|
||||
y16 AND x16 -> tqh
|
||||
qtf XOR nsp -> z06
|
||||
vjv AND vvn -> pbj
|
||||
y23 XOR x23 -> bpn
|
||||
tsm OR dnc -> tqq
|
||||
knt XOR dcq -> z19
|
||||
ktj AND cmb -> qqf
|
||||
ckh OR rrp -> cmb
|
||||
x43 AND y43 -> hrf
|
||||
mwc OR qjs -> pfv
|
||||
qpj XOR vmh -> z05
|
||||
y16 XOR x16 -> dgs
|
||||
x29 XOR y29 -> kcf
|
||||
qqf OR jjp -> jmf
|
||||
rnp XOR mbj -> z03
|
||||
x12 AND y12 -> cpr
|
||||
x06 AND y06 -> ksv
|
||||
swn XOR rkg -> z43
|
||||
x38 XOR y38 -> fkg
|
||||
x04 XOR y04 -> nsv
|
||||
x07 XOR y07 -> dhf
|
||||
bhp OR shd -> hfh
|
||||
pwm XOR jgj -> z33
|
||||
ddd AND hdn -> cfb
|
||||
qhf OR kqk -> bdh
|
||||
tcg AND rtn -> ckh
|
||||
mjj OR dcw -> wps
|
||||
pjk AND jsv -> sbj
|
||||
gfr OR ckc -> vts
|
||||
bnp AND mtq -> tsm
|
||||
y31 XOR x31 -> gtq
|
||||
vjv XOR vvn -> z44
|
||||
tnc XOR gbw -> z09
|
||||
pjt AND nsv -> tdr
|
||||
x09 AND y09 -> gcp
|
||||
x19 XOR y19 -> knt
|
||||
mkh OR pbj -> z45
|
||||
bnr AND jhf -> bwd
|
||||
x22 AND y22 -> kkt
|
||||
x41 AND y41 -> bhp
|
||||
x10 AND y10 -> kbs
|
||||
qnn AND gsw -> mjj
|
||||
tjw OR rds -> pns
|
||||
y35 XOR x35 -> srg
|
||||
pnj XOR srn -> z26
|
||||
rqp OR qbc -> wrd
|
||||
gtq XOR pns -> z31
|
||||
y40 AND x40 -> vpj
|
||||
y03 AND x03 -> bcm
|
||||
dgs AND wps -> ckr
|
||||
jwh OR gcp -> dnn
|
||||
sqd OR pvg -> qtf
|
||||
cmb XOR ktj -> z37
|
||||
vnp XOR wbb -> z41
|
||||
bpn AND pjm -> hvk
|
||||
cmj AND hpp -> ckb
|
||||
bnp XOR mtq -> z20
|
||||
hds AND cpw -> tmk
|
||||
jvr OR kbs -> jsv
|
||||
pcs OR kqm -> pnj
|
||||
y33 AND x33 -> jbr
|
||||
jww XOR mrf -> z30
|
||||
dnn XOR nbd -> z10
|
||||
x05 XOR y05 -> vmh
|
||||
x25 AND y25 -> pcs
|
||||
qbk XOR bpp -> z12
|
||||
y25 XOR x25 -> rpf
|
||||
x39 XOR y39 -> cmj
|
||||
vpj OR nhn -> wbb
|
||||
y18 AND x18 -> djn
|
||||
ctm XOR ngm -> z13
|
||||
pjb AND qtk -> ckc
|
||||
y15 XOR x15 -> qnn
|
||||
y31 AND x31 -> nqk
|
||||
x02 XOR y02 -> ndk
|
||||
jdv XOR rkk -> z22
|
||||
x19 AND y19 -> skb
|
||||
wrd AND nnd -> tjd
|
||||
y07 AND x07 -> rqp
|
||||
x01 AND y01 -> mwc
|
||||
y03 XOR x03 -> mbj
|
||||
pns AND gtq -> sfd
|
||||
bwd OR bwm -> jgj
|
||||
hrf OR grs -> vvn
|
||||
y17 AND x17 -> dmf
|
||||
ckr OR tqh -> nbt
|
||||
x00 AND y00 -> pgc
|
||||
tqq AND gmm -> ffk
|
||||
x39 AND y39 -> kqt
|
||||
pjm XOR bpn -> z23
|
||||
qrm OR ksv -> rrw
|
||||
x11 AND y11 -> krf
|
||||
nbd AND dnn -> jvr
|
||||
y30 XOR x30 -> mrf
|
||||
tdr OR psq -> qpj
|
||||
qnn XOR gsw -> z15
|
||||
x32 XOR y32 -> jhf
|
||||
wrd XOR nnd -> z08
|
||||
x44 AND y44 -> mkh
|
||||
jhf XOR bnr -> z32
|
||||
fjm AND gqp -> nbw
|
||||
jsv XOR pjk -> z11
|
||||
y21 AND x21 -> stc
|
||||
hwc OR mvv -> rnp
|
||||
y13 AND x13 -> rmd
|
||||
x42 AND y42 -> sfj
|
||||
y15 AND x15 -> dcw
|
||||
x28 XOR y28 -> tjn
|
||||
x38 AND y38 -> mrc
|
||||
jgj AND pwm -> hqs
|
||||
srn AND pnj -> kqk
|
||||
x33 XOR y33 -> pwm
|
||||
tmk OR fmr -> crw
|
||||
dhf XOR rrw -> z07
|
||||
y28 AND x28 -> nbj
|
||||
y36 AND x36 -> rrp
|
||||
rkg AND swn -> grs
|
||||
y17 XOR x17 -> chp
|
||||
hfh XOR cjm -> z42
|
||||
tnc AND gbw -> jwh
|
||||
x37 XOR y37 -> ktj
|
||||
y21 XOR x21 -> gmm
|
||||
pjb XOR qtk -> z34
|
||||
kjb OR nbj -> bvh
|
||||
nbt XOR chp -> z17
|
||||
rrw AND dhf -> qbc
|
||||
pfv XOR ndk -> z02
|
||||
y27 XOR x27 -> bkd
|
||||
qpj AND vmh -> sqd
|
||||
mrc OR ftb -> hpp
|
||||
hvk OR gpq -> cpw
|
||||
vts XOR srg -> z35
|
||||
vfr OR kkt -> pjm
|
||||
hpp XOR cmj -> z39
|
||||
y34 AND x34 -> gfr
|
||||
skb OR hfc -> bnp
|
||||
rkk AND jdv -> vfr
|
||||
kcf AND bvh -> crj
|
||||
ppq OR crj -> jww
|
||||
btg XOR fsm -> z40
|
||||
jmf XOR fkg -> z38
|
||||
y02 AND x02 -> mvv
|
||||
hdn XOR ddd -> z18
|
||||
ffk OR stc -> rkk
|
||||
x44 XOR y44 -> vjv
|
||||
y08 AND x08 -> vsw
|
||||
tjd OR vsw -> tnc
|
||||
pvc OR nbw -> gsw
|
||||
y42 XOR x42 -> cjm
|
||||
x06 XOR y06 -> nsp
|
||||
kcf XOR bvh -> z29
|
||||
y05 AND x05 -> pvg
|
||||
x36 XOR y36 -> rtn
|
||||
y24 AND x24 -> fmr
|
||||
mbj AND rnp -> ppp
|
||||
crw AND rpf -> kqm
|
||||
cpw XOR hds -> z24
|
||||
pgc XOR tct -> z01
|
||||
ndk AND pfv -> hwc
|
||||
x14 XOR y14 -> gqp
|
||||
qtf AND nsp -> qrm
|
||||
tct AND pgc -> qjs
|
||||
rmd OR wdq -> fjm
|
||||
x20 AND y20 -> dnc
|
||||
y13 XOR x13 -> ctm
|
||||
nbt AND chp -> cbf
|
||||
x40 XOR y40 -> fsm
|
||||
x32 AND y32 -> bwm
|
||||
jww AND mrf -> rds
|
||||
x00 XOR y00 -> z00
|
||||
dmf OR cbf -> ddd
|
||||
x29 AND y29 -> ppq
|
||||
crw XOR rpf -> z25
|
||||
qbk AND bpp -> hwv
|
||||
y11 XOR x11 -> pjk
|
||||
bdh AND bkd -> mpk
|
||||
wps XOR dgs -> z16
|
||||
sbj OR krf -> bpp
|
||||
kqt OR ckb -> btg
|
||||
x12 XOR y12 -> qbk
|
||||
y26 XOR x26 -> srn
|
||||
y34 XOR x34 -> qtk
|
||||
cqw XOR tjn -> z28
|
||||
sfd OR nqk -> bnr
|
||||
hqs OR jbr -> pjb
|
||||
y08 XOR x08 -> nnd
|
||||
bdh XOR bkd -> z27
|
||||
y37 AND x37 -> jjp
|
||||
tcg XOR rtn -> z36
|
||||
x04 AND y04 -> psq
|
||||
gmm XOR tqq -> z21
|
||||
bgp OR ntc -> tcg
|
||||
ngm AND ctm -> wdq
|
||||
y35 AND x35 -> bgp
|
||||
y23 AND x23 -> gpq
|
||||
vts AND srg -> ntc
|
||||
x09 XOR y09 -> gbw
|
||||
y41 XOR x41 -> vnp
|
||||
x22 XOR y22 -> jdv
|
||||
y20 XOR x20 -> mtq
|
||||
x24 XOR y24 -> hds
|
||||
cfb OR djn -> dcq
|
||||
jmf AND fkg -> ftb
|
||||
ppp OR bcm -> pjt
|
||||
y27 AND x27 -> srq
|
||||
tjn AND cqw -> kjb
|
||||
y14 AND x14 -> pvc
|
313
day24/data.txt
Normal file
313
day24/data.txt
Normal file
@ -0,0 +1,313 @@
|
||||
x00: 1
|
||||
x01: 1
|
||||
x02: 0
|
||||
x03: 0
|
||||
x04: 0
|
||||
x05: 1
|
||||
x06: 0
|
||||
x07: 1
|
||||
x08: 1
|
||||
x09: 0
|
||||
x10: 1
|
||||
x11: 0
|
||||
x12: 0
|
||||
x13: 0
|
||||
x14: 1
|
||||
x15: 1
|
||||
x16: 1
|
||||
x17: 0
|
||||
x18: 1
|
||||
x19: 1
|
||||
x20: 0
|
||||
x21: 0
|
||||
x22: 0
|
||||
x23: 0
|
||||
x24: 1
|
||||
x25: 1
|
||||
x26: 0
|
||||
x27: 0
|
||||
x28: 1
|
||||
x29: 1
|
||||
x30: 0
|
||||
x31: 1
|
||||
x32: 0
|
||||
x33: 0
|
||||
x34: 1
|
||||
x35: 1
|
||||
x36: 0
|
||||
x37: 0
|
||||
x38: 0
|
||||
x39: 0
|
||||
x40: 0
|
||||
x41: 0
|
||||
x42: 0
|
||||
x43: 1
|
||||
x44: 1
|
||||
y00: 1
|
||||
y01: 0
|
||||
y02: 1
|
||||
y03: 1
|
||||
y04: 0
|
||||
y05: 0
|
||||
y06: 1
|
||||
y07: 1
|
||||
y08: 0
|
||||
y09: 1
|
||||
y10: 1
|
||||
y11: 1
|
||||
y12: 1
|
||||
y13: 0
|
||||
y14: 1
|
||||
y15: 0
|
||||
y16: 0
|
||||
y17: 1
|
||||
y18: 1
|
||||
y19: 0
|
||||
y20: 1
|
||||
y21: 1
|
||||
y22: 1
|
||||
y23: 1
|
||||
y24: 0
|
||||
y25: 0
|
||||
y26: 0
|
||||
y27: 0
|
||||
y28: 1
|
||||
y29: 1
|
||||
y30: 0
|
||||
y31: 1
|
||||
y32: 1
|
||||
y33: 0
|
||||
y34: 0
|
||||
y35: 1
|
||||
y36: 0
|
||||
y37: 0
|
||||
y38: 0
|
||||
y39: 1
|
||||
y40: 0
|
||||
y41: 0
|
||||
y42: 1
|
||||
y43: 0
|
||||
y44: 1
|
||||
|
||||
fjm XOR gqp -> z14
|
||||
x18 XOR y18 -> hdn
|
||||
wbb AND vnp -> shd
|
||||
srq OR mpk -> cqw
|
||||
y30 AND x30 -> tjw
|
||||
x26 AND y26 -> qhf
|
||||
y10 XOR x10 -> kbs
|
||||
y43 XOR x43 -> swn
|
||||
sfj OR jks -> rkg
|
||||
y01 XOR x01 -> tct
|
||||
nsv XOR pjt -> z04
|
||||
dcq AND knt -> hfc
|
||||
hfh AND cjm -> jks
|
||||
hwv OR cpr -> ngm
|
||||
fsm AND btg -> nhn
|
||||
y16 AND x16 -> tqh
|
||||
qtf XOR nsp -> ksv
|
||||
vjv AND vvn -> pbj
|
||||
y23 XOR x23 -> bpn
|
||||
tsm OR dnc -> z20
|
||||
knt XOR dcq -> z19
|
||||
ktj AND cmb -> qqf
|
||||
ckh OR rrp -> cmb
|
||||
x43 AND y43 -> hrf
|
||||
mwc OR qjs -> pfv
|
||||
qpj XOR vmh -> z05
|
||||
y16 XOR x16 -> dgs
|
||||
x29 XOR y29 -> kcf
|
||||
qqf OR jjp -> jmf
|
||||
rnp XOR mbj -> z03
|
||||
x12 AND y12 -> cpr
|
||||
x06 AND y06 -> z06
|
||||
swn XOR rkg -> z43
|
||||
x38 XOR y38 -> fkg
|
||||
x04 XOR y04 -> nsv
|
||||
x07 XOR y07 -> dhf
|
||||
bhp OR shd -> hfh
|
||||
pwm XOR jgj -> z33
|
||||
ddd AND hdn -> cfb
|
||||
qhf OR kqk -> bdh
|
||||
tcg AND rtn -> ckh
|
||||
mjj OR dcw -> wps
|
||||
pjk AND jsv -> sbj
|
||||
gfr OR ckc -> vts
|
||||
bnp AND mtq -> tsm
|
||||
y31 XOR x31 -> gtq
|
||||
vjv XOR vvn -> z44
|
||||
tnc XOR gbw -> z09
|
||||
pjt AND nsv -> tdr
|
||||
x09 AND y09 -> gcp
|
||||
x19 XOR y19 -> knt
|
||||
mkh OR pbj -> z45
|
||||
bnr AND jhf -> bwd
|
||||
x22 AND y22 -> kkt
|
||||
x41 AND y41 -> bhp
|
||||
x10 AND y10 -> nbd
|
||||
qnn AND gsw -> mjj
|
||||
tjw OR rds -> pns
|
||||
y35 XOR x35 -> srg
|
||||
pnj XOR srn -> z26
|
||||
rqp OR qbc -> wrd
|
||||
gtq XOR pns -> z31
|
||||
y40 AND x40 -> vpj
|
||||
y03 AND x03 -> bcm
|
||||
dgs AND wps -> ckr
|
||||
jwh OR gcp -> dnn
|
||||
sqd OR pvg -> qtf
|
||||
cmb XOR ktj -> z37
|
||||
vnp XOR wbb -> z41
|
||||
bpn AND pjm -> hvk
|
||||
cmj AND hpp -> z39
|
||||
bnp XOR mtq -> tqq
|
||||
hds AND cpw -> tmk
|
||||
jvr OR kbs -> jsv
|
||||
pcs OR kqm -> pnj
|
||||
y33 AND x33 -> jbr
|
||||
jww XOR mrf -> z30
|
||||
dnn XOR nbd -> z10
|
||||
x05 XOR y05 -> vmh
|
||||
x25 AND y25 -> pcs
|
||||
qbk XOR bpp -> z12
|
||||
y25 XOR x25 -> rpf
|
||||
x39 XOR y39 -> cmj
|
||||
vpj OR nhn -> wbb
|
||||
y18 AND x18 -> djn
|
||||
ctm XOR ngm -> z13
|
||||
pjb AND qtk -> ckc
|
||||
y15 XOR x15 -> qnn
|
||||
y31 AND x31 -> nqk
|
||||
x02 XOR y02 -> ndk
|
||||
jdv XOR rkk -> z22
|
||||
x19 AND y19 -> skb
|
||||
wrd AND nnd -> tjd
|
||||
y07 AND x07 -> rqp
|
||||
x01 AND y01 -> mwc
|
||||
y03 XOR x03 -> mbj
|
||||
pns AND gtq -> sfd
|
||||
bwd OR bwm -> jgj
|
||||
hrf OR grs -> vvn
|
||||
y17 AND x17 -> dmf
|
||||
ckr OR tqh -> nbt
|
||||
x00 AND y00 -> pgc
|
||||
tqq AND gmm -> ffk
|
||||
x39 AND y39 -> kqt
|
||||
pjm XOR bpn -> z23
|
||||
qrm OR ksv -> rrw
|
||||
x11 AND y11 -> krf
|
||||
nbd AND dnn -> jvr
|
||||
y30 XOR x30 -> mrf
|
||||
tdr OR psq -> qpj
|
||||
qnn XOR gsw -> z15
|
||||
x32 XOR y32 -> jhf
|
||||
wrd XOR nnd -> z08
|
||||
x44 AND y44 -> mkh
|
||||
jhf XOR bnr -> z32
|
||||
fjm AND gqp -> nbw
|
||||
jsv XOR pjk -> z11
|
||||
y21 AND x21 -> stc
|
||||
hwc OR mvv -> rnp
|
||||
y13 AND x13 -> rmd
|
||||
x42 AND y42 -> sfj
|
||||
y15 AND x15 -> dcw
|
||||
x28 XOR y28 -> tjn
|
||||
x38 AND y38 -> mrc
|
||||
jgj AND pwm -> hqs
|
||||
srn AND pnj -> kqk
|
||||
x33 XOR y33 -> pwm
|
||||
tmk OR fmr -> crw
|
||||
dhf XOR rrw -> z07
|
||||
y28 AND x28 -> nbj
|
||||
y36 AND x36 -> rrp
|
||||
rkg AND swn -> grs
|
||||
y17 XOR x17 -> chp
|
||||
hfh XOR cjm -> z42
|
||||
tnc AND gbw -> jwh
|
||||
x37 XOR y37 -> ktj
|
||||
y21 XOR x21 -> gmm
|
||||
pjb XOR qtk -> z34
|
||||
kjb OR nbj -> bvh
|
||||
nbt XOR chp -> z17
|
||||
rrw AND dhf -> qbc
|
||||
pfv XOR ndk -> z02
|
||||
y27 XOR x27 -> bkd
|
||||
qpj AND vmh -> sqd
|
||||
mrc OR ftb -> hpp
|
||||
hvk OR gpq -> cpw
|
||||
vts XOR srg -> z35
|
||||
vfr OR kkt -> pjm
|
||||
hpp XOR cmj -> ckb
|
||||
y34 AND x34 -> gfr
|
||||
skb OR hfc -> bnp
|
||||
rkk AND jdv -> vfr
|
||||
kcf AND bvh -> crj
|
||||
ppq OR crj -> jww
|
||||
btg XOR fsm -> z40
|
||||
jmf XOR fkg -> z38
|
||||
y02 AND x02 -> mvv
|
||||
hdn XOR ddd -> z18
|
||||
ffk OR stc -> rkk
|
||||
x44 XOR y44 -> vjv
|
||||
y08 AND x08 -> vsw
|
||||
tjd OR vsw -> tnc
|
||||
pvc OR nbw -> gsw
|
||||
y42 XOR x42 -> cjm
|
||||
x06 XOR y06 -> nsp
|
||||
kcf XOR bvh -> z29
|
||||
y05 AND x05 -> pvg
|
||||
x36 XOR y36 -> rtn
|
||||
y24 AND x24 -> fmr
|
||||
mbj AND rnp -> ppp
|
||||
crw AND rpf -> kqm
|
||||
cpw XOR hds -> z24
|
||||
pgc XOR tct -> z01
|
||||
ndk AND pfv -> hwc
|
||||
x14 XOR y14 -> gqp
|
||||
qtf AND nsp -> qrm
|
||||
tct AND pgc -> qjs
|
||||
rmd OR wdq -> fjm
|
||||
x20 AND y20 -> dnc
|
||||
y13 XOR x13 -> ctm
|
||||
nbt AND chp -> cbf
|
||||
x40 XOR y40 -> fsm
|
||||
x32 AND y32 -> bwm
|
||||
jww AND mrf -> rds
|
||||
x00 XOR y00 -> z00
|
||||
dmf OR cbf -> ddd
|
||||
x29 AND y29 -> ppq
|
||||
crw XOR rpf -> z25
|
||||
qbk AND bpp -> hwv
|
||||
y11 XOR x11 -> pjk
|
||||
bdh AND bkd -> mpk
|
||||
wps XOR dgs -> z16
|
||||
sbj OR krf -> bpp
|
||||
kqt OR ckb -> btg
|
||||
x12 XOR y12 -> qbk
|
||||
y26 XOR x26 -> srn
|
||||
y34 XOR x34 -> qtk
|
||||
cqw XOR tjn -> z28
|
||||
sfd OR nqk -> bnr
|
||||
hqs OR jbr -> pjb
|
||||
y08 XOR x08 -> nnd
|
||||
bdh XOR bkd -> z27
|
||||
y37 AND x37 -> jjp
|
||||
tcg XOR rtn -> z36
|
||||
x04 AND y04 -> psq
|
||||
gmm XOR tqq -> z21
|
||||
bgp OR ntc -> tcg
|
||||
ngm AND ctm -> wdq
|
||||
y35 AND x35 -> bgp
|
||||
y23 AND x23 -> gpq
|
||||
vts AND srg -> ntc
|
||||
x09 XOR y09 -> gbw
|
||||
y41 XOR x41 -> vnp
|
||||
x22 XOR y22 -> jdv
|
||||
y20 XOR x20 -> mtq
|
||||
x24 XOR y24 -> hds
|
||||
cfb OR djn -> dcq
|
||||
jmf AND fkg -> ftb
|
||||
ppp OR bcm -> pjt
|
||||
y27 AND x27 -> srq
|
||||
tjn AND cqw -> kjb
|
||||
y14 AND x14 -> pvc
|
47
day24/example.txt
Normal file
47
day24/example.txt
Normal file
@ -0,0 +1,47 @@
|
||||
x00: 1
|
||||
x01: 0
|
||||
x02: 1
|
||||
x03: 1
|
||||
x04: 0
|
||||
y00: 1
|
||||
y01: 1
|
||||
y02: 1
|
||||
y03: 1
|
||||
y04: 1
|
||||
|
||||
ntg XOR fgs -> mjb
|
||||
y02 OR x01 -> tnw
|
||||
kwq OR kpj -> z05
|
||||
x00 OR x03 -> fst
|
||||
tgd XOR rvg -> z01
|
||||
vdt OR tnw -> bfw
|
||||
bfw AND frj -> z10
|
||||
ffh OR nrd -> bqk
|
||||
y00 AND y03 -> djm
|
||||
y03 OR y00 -> psh
|
||||
bqk OR frj -> z08
|
||||
tnw OR fst -> frj
|
||||
gnj AND tgd -> z11
|
||||
bfw XOR mjb -> z00
|
||||
x03 OR x00 -> vdt
|
||||
gnj AND wpb -> z02
|
||||
x04 AND y00 -> kjc
|
||||
djm OR pbm -> qhw
|
||||
nrd AND vdt -> hwm
|
||||
kjc AND fst -> rvg
|
||||
y04 OR y02 -> fgs
|
||||
y01 AND x02 -> pbm
|
||||
ntg OR kjc -> kwq
|
||||
psh XOR fgs -> tgd
|
||||
qhw XOR tgd -> z09
|
||||
pbm OR djm -> kpj
|
||||
x03 XOR y03 -> ffh
|
||||
x00 XOR y04 -> ntg
|
||||
bfw OR bqk -> z06
|
||||
nrd XOR fgs -> wpb
|
||||
frj XOR qhw -> z04
|
||||
bqk OR frj -> z07
|
||||
y03 OR x01 -> nrd
|
||||
hwm AND bqk -> z03
|
||||
tgd XOR rvg -> z12
|
||||
tnw OR pbm -> gnj
|
10
day24/example_simple.txt
Normal file
10
day24/example_simple.txt
Normal file
@ -0,0 +1,10 @@
|
||||
x00: 1
|
||||
x01: 1
|
||||
x02: 1
|
||||
y00: 0
|
||||
y01: 1
|
||||
y02: 0
|
||||
|
||||
x00 AND y00 -> z00
|
||||
x01 XOR y01 -> z01
|
||||
x02 OR y02 -> z02
|
3
day24/go.mod
Normal file
3
day24/go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module stevenlr.com/aoc2024/day24
|
||||
|
||||
go 1.23.3
|
256
day24/main.go
Normal file
256
day24/main.go
Normal file
@ -0,0 +1,256 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Println(part1(readData("example_simple.txt")), 4)
|
||||
fmt.Println(part1(readData("example.txt")), 2024)
|
||||
fmt.Println(part1(readData("data.txt")), 49574189473968)
|
||||
// fmt.Println(part2(readData("data.txt").gates))
|
||||
fmt.Println(part2(readData("data-2.txt").gates))
|
||||
|
||||
}
|
||||
|
||||
const (
|
||||
AND = "AND"
|
||||
OR = "OR"
|
||||
XOR = "XOR"
|
||||
)
|
||||
|
||||
type Gate struct {
|
||||
op string
|
||||
a, b string
|
||||
}
|
||||
|
||||
type Circuit struct {
|
||||
values map[string]bool
|
||||
gates map[string]Gate
|
||||
}
|
||||
|
||||
func part1(input Circuit) (result uint64) {
|
||||
queue := []string{}
|
||||
for output := range input.gates {
|
||||
queue = append(queue, output)
|
||||
}
|
||||
|
||||
for len(queue) > 0 {
|
||||
output := queue[len(queue)-1]
|
||||
if _, alreadyComputed := input.values[output]; alreadyComputed {
|
||||
queue = queue[:len(queue)-1]
|
||||
continue
|
||||
}
|
||||
|
||||
gate := input.gates[output]
|
||||
valueA, okA := input.values[gate.a]
|
||||
valueB, okB := input.values[gate.b]
|
||||
|
||||
if !okA || !okB {
|
||||
if !okA {
|
||||
queue = append(queue, gate.a)
|
||||
}
|
||||
if !okB {
|
||||
queue = append(queue, gate.b)
|
||||
}
|
||||
} else {
|
||||
input.values[output] = evaluate(gate.op, valueA, valueB)
|
||||
queue = queue[:len(queue)-1]
|
||||
}
|
||||
}
|
||||
|
||||
zWires := []string{}
|
||||
for wire := range input.values {
|
||||
if wire[0] == 'z' {
|
||||
zWires = append(zWires, wire)
|
||||
}
|
||||
}
|
||||
|
||||
sort.Sort(sort.Reverse(sort.StringSlice(zWires)))
|
||||
|
||||
for _, w := range zWires {
|
||||
if input.values[w] {
|
||||
result = result<<1 | 1
|
||||
} else {
|
||||
result = result << 1
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func evaluate(op string, a, b bool) bool {
|
||||
switch op {
|
||||
case AND:
|
||||
return a && b
|
||||
case OR:
|
||||
return a || b
|
||||
case XOR:
|
||||
return a != b
|
||||
default:
|
||||
panic("unknown operator")
|
||||
}
|
||||
}
|
||||
|
||||
func name(prefix byte, num int) string {
|
||||
a := byte(num%10 + '0')
|
||||
b := byte(num/10 + '0')
|
||||
return string([]byte{prefix, b, a})
|
||||
}
|
||||
|
||||
func evaluateAdder(gates map[string]Gate, a, b uint64) uint64 {
|
||||
circuit := Circuit{gates: gates, values: make(map[string]bool)}
|
||||
for i := range 50 {
|
||||
x := a&(uint64(1)<<i) != 0
|
||||
y := b&(uint64(1)<<i) != 0
|
||||
circuit.values[name('x', i)] = x
|
||||
circuit.values[name('y', i)] = y
|
||||
}
|
||||
return part1(circuit)
|
||||
}
|
||||
|
||||
func printAround(w string, prefix string, gates map[string]Gate, depth int) {
|
||||
if depth == 0 {
|
||||
return
|
||||
}
|
||||
if g, ok := gates[w]; ok {
|
||||
fmt.Println(prefix, w, g)
|
||||
printAround(g.a, prefix+" ", gates, depth-1)
|
||||
printAround(g.b, prefix+" ", gates, depth-1)
|
||||
}
|
||||
}
|
||||
|
||||
func part2(gates map[string]Gate) string {
|
||||
// ckb-z39
|
||||
// tqq-z20
|
||||
// ksv-z06
|
||||
// kbs-nbd
|
||||
// ckb,kbs,ksv,nbd,tqq,z06,z20,z39
|
||||
|
||||
// fmt.Println("z without xor")
|
||||
// for out, g := range gates {
|
||||
// if out[0] == 'z' && g.op != XOR && out != "z45" {
|
||||
// fmt.Println(out, g)
|
||||
// }
|
||||
// }
|
||||
// z39 {0 cmj hpp} DONE
|
||||
// z20 {1 tsm dnc} DONE
|
||||
|
||||
// z06 {AND x06 y06} DONE
|
||||
// nsp {XOR x06 y06}
|
||||
// ksv {XOR qtf nsp}
|
||||
|
||||
// printAround("z06", gates, 3)
|
||||
// fmt.Println("")
|
||||
// for out, g := range gates {
|
||||
// if g.a == "nsp" || g.b == "nsp" {
|
||||
// fmt.Println(out, g)
|
||||
// }
|
||||
// }
|
||||
// fmt.Println("xor without x or y")
|
||||
// for out, g := range gates {
|
||||
// if g.op == XOR && (g.a[0] != 'x' && g.a[0] != 'y' && g.b[0] != 'x' && g.b[0] != 'y' && out[0] != 'z') {
|
||||
// fmt.Println(out, g)
|
||||
// }
|
||||
// }
|
||||
// ckb {2 hpp cmj} DONE
|
||||
// tqq {2 bnp mtq} DONE
|
||||
// ksv {2 qtf nsp} DONE
|
||||
|
||||
// for i := range uint64(50) {
|
||||
// x := uint64(1) << i - 1
|
||||
// res1 := evaluateAdder(gates, x, 1)
|
||||
// res2 := x + 1
|
||||
// if res1 != res2 {
|
||||
// fmt.Println(i, res1, res2)
|
||||
// }
|
||||
// }
|
||||
// Issue at 11
|
||||
// printAround("z11", "", gates, 4)
|
||||
// printAround("z10", "", gates, 4)
|
||||
// z11 {XOR jsv pjk}
|
||||
// jsv {OR jvr kbs}
|
||||
// jvr {AND nbd dnn}
|
||||
// nbd {AND x10 y10}
|
||||
// dnn {OR jwh gcp}
|
||||
// kbs {XOR y10 x10}
|
||||
// pjk {XOR y11 x11}
|
||||
//
|
||||
// z10 {XOR dnn nbd}
|
||||
// dnn {OR jwh gcp}
|
||||
// jwh {AND tnc gbw}
|
||||
// tnc {OR tjd vsw}
|
||||
// gbw {XOR x09 y09}
|
||||
// gcp {AND x09 y09}
|
||||
// nbd {AND x10 y10}
|
||||
|
||||
// findGate := func(gate Gate) string {
|
||||
// for output, g := range gates {
|
||||
// if g.op == gate.op && ((g.a == gate.a && g.b == gate.b) || (g.a == gate.b && g.b == gate.a)) {
|
||||
// return output
|
||||
// }
|
||||
// }
|
||||
// return ""
|
||||
// }
|
||||
|
||||
// carry := make([]string, 100)
|
||||
// carry[0] = findGate(Gate{AND, "x00", "y00"})
|
||||
// if carry[0] == "" {
|
||||
// panic("Oh no")
|
||||
// }
|
||||
|
||||
// for i := 1; i < 2; i++ {
|
||||
// if tmpz0 := findGate(Gate{XOR, name('x', i), name('y', i)}); tmpz0 != "" {
|
||||
// fmt.Println("tmpz0", i, name('x', i), name('y', i), "->", tmpz0)
|
||||
// z := findGate(Gate{XOR, tmpz0, carry[i-1]})
|
||||
// if z[0] == 'z' {
|
||||
// fmt.Println("z", i, tmpz0, carry[i-1], "->", z)
|
||||
// } else {
|
||||
// fmt.Println("oh no")
|
||||
// }
|
||||
// } else if tmpz0 := findGate(Gate{XOR, name('x', i), carry[i-1]}); tmpz0 != "" {
|
||||
// fmt.Println("tmpz0", i, name('x', i), carry[i-1], "->", tmpz0)
|
||||
// } else if tmpz0 := findGate(Gate{XOR, name('y', i), carry[i-1]}); tmpz0 != "" {
|
||||
// fmt.Println("tmpz0", i, name('y', i), carry[i-1], "->", tmpz0)
|
||||
// }
|
||||
// }
|
||||
|
||||
// // for output, g := range gates {
|
||||
|
||||
// // }
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func readData(fileName string) (data Circuit) {
|
||||
data = Circuit{
|
||||
values: make(map[string]bool),
|
||||
gates: make(map[string]Gate),
|
||||
}
|
||||
|
||||
fp, _ := os.Open(fileName)
|
||||
scanner := bufio.NewScanner(fp)
|
||||
|
||||
for scanner.Scan() {
|
||||
line := strings.TrimSpace(scanner.Text())
|
||||
if len(line) == 0 {
|
||||
break
|
||||
}
|
||||
|
||||
wire := line[0:3]
|
||||
value := line[5] == '1'
|
||||
|
||||
data.values[wire] = value
|
||||
}
|
||||
|
||||
for scanner.Scan() {
|
||||
line := strings.Split(strings.TrimSpace(scanner.Text()), " ")
|
||||
data.gates[line[4]] = Gate{line[1], line[0], line[2]}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user