Skip to content

Instantly share code, notes, and snippets.

@PurpleMyst
Created December 8, 2017 13:38
Show Gist options
  • Save PurpleMyst/31e497ac32e9f91add8748f90fd1c46c to your computer and use it in GitHub Desktop.
Save PurpleMyst/31e497ac32e9f91add8748f90fd1c46c to your computer and use it in GitHub Desktop.
Solution for AoC Day 7 Part 2
apcztdj (61)
ulovosc (61) -> buzjgp, iimyluk
awpvs (88)
ykbjhi (14)
gxvketg (49)
gpmvdo (78) -> jjixrr, zacrh, smylfq, fdvtn
nwpmqu (6025) -> aytrde, grokih, pjqaa, nzzved
keiakhg (50)
vkrlz (22)
myzkj (40)
zkzpbbp (46)
eaumqtc (288) -> tvmvvxn, ckcpovl
htlovrb (1662) -> atxtq, ewsqqum, mjwviex
aoxky (53873) -> orzwmml, tcvtul, ygszhn
uhfiqwc (81)
gziopi (189) -> hboommj, glbipl, evojkum
rjksjq (66)
rwyzrl (1434) -> geiethw, nclvb, riphudi
gmusjd (98)
vjmwzo (76)
xymsu (153) -> kbgmlab, yjjewyt
mgiumh (64)
cnfcuww (40)
pgeoixp (211) -> qgrtg, svtcvi, rutmxs
zwwpva (89)
otgnir (87)
vxftbc (60)
xxpfmp (32) -> cnqemd, jmujchg, yfolyk, zalahl
tcrcyis (1098) -> tyealpm, dirvqby
ffjshhj (65)
powwpec (23)
gudpriq (171) -> zqxyn, bwxgrhf, dclnnlg
nzrbmfg (7)
fgptt (210)
hpcafa (91)
urepv (2628) -> qzcqhsk, iqeynjk, fakqhi
qzcqhsk (516) -> ujjksl, qccwy, cddbi, cvpoqqk, nnhlcn
riphudi (35)
nwtvzap (101) -> iwumx, bpazmfd
xhxctp (84)
dkpmgrq (94)
rvftpif (5)
iqeap (27)
aplauwh (693) -> rjkzf, nfvns, snhww
iayrwd (81) -> beidb, lpjxpx, mtvxp, alcfp
nsuysii (86) -> aktzpym, gdckok
zbxbe (59) -> ahwtsi, uqjcaa
yhiwu (37)
qpcmzl (28)
jmujchg (48)
germn (218) -> mbdwm, kjxac
mxsvay (328) -> stuom, twgcf, mexagfy
sneog (20)
rkczq (180) -> mdfae, rrsfv, yycys
nnbfqh (819) -> guttanj, htmjx, rwlmsx
nxzafkd (60)
tptdvct (64)
mokvas (49) -> ygfcl, xxitunl
wcztr (133) -> chxurcq, hemhd, siwvncp
satie (61)
vcjpuw (43)
hzcmmh (90) -> ivbwdn, eknlt, nzfjwtq, hwcbsyu, gejaump, xymsu, ebtoke
jimigk (68)
vzfebn (196) -> elqlx, lkffdz
lcwpm (1946) -> jwjuylx, pjmwkz, geajywv, zyqfc
iimyluk (65)
zcgaxsi (49)
elhmwsx (92)
bxsxr (189) -> msowvgh, zjxlr, yylzxb
qgrtg (14)
gnupj (74)
aktzpym (72)
gvuwq (88)
iojjekn (160) -> gnhcs, homrc
gzdtco (88)
ospfv (5)
epovby (14)
jflns (39)
hmqam (161) -> tkiheq, flrtvno
koxyrpn (94)
witxvcj (44)
pseltr (70) -> bzqmgl, vlmzfaf
yrotnfh (68)
fyqlqkg (19) -> gicwtf, dlxubg, ysrwm, qjnela, djupte, rayzwrp, mgexekz
eipyu (84)
hacgqe (54)
nssvbj (5)
maugts (7) -> owizuw, dopwkoo, nnbfqh, rwyzrl, kkfio, gzpcl
uiclmg (14)
psyem (173) -> tbxxc, bodpwem, lfhmte, pyobp, znnjzzw, pcnbkxm, tolty
rskopr (68)
mhihjb (68)
bfkpjdl (150) -> mpbui, qcqpavg, lwmblwr
ezotk (50)
dyadgtm (7) -> zcvzrja, rifmmf
npipd (20)
ozqsvif (231) -> stketdd, jpedzjk, vrpoaq, hbollnl
lxshx (67) -> peocao, vqsxe, tstuc, pqwzgz, ycuajn
kdersld (98) -> nrarwj, ajyyjfx
ontcbns (111) -> jptxyhp, zwwpva, ndoecxy
vyzksry (99)
sxygbpo (27)
owayyaw (5346) -> ykvqh, ruejmc, oqrvpt, qmvebxb, macxvi
paqzzv (60) -> nujgng, krnjk
qhutc (168) -> ykbjhi, uiclmg
ofndvr (46)
vfgomle (56)
znkru (32)
eymsjfd (31)
dvetl (124) -> kdccrl, rtsji
pvdbhh (96)
ggilocf (55)
wjjmh (36)
zqxyn (14)
qweyxa (32)
tiirxay (9)
avsse (292) -> wchlqxi, griwu
fmtox (6) -> mrflo, ikpyx, tsfrlzw
qczgclr (90)
tajeklj (151) -> kmrbuvq, hiaoc
kxtzbj (49)
dopwkoo (990) -> hnrwa, nwtvzap, ruitlxx
gyqrut (1431) -> pykcza, kxxhn, tipdlf
eknlt (177) -> erphv, dhahfgv
pnpge (49)
teeunu (4569) -> hirvz, mkpgx, dnflzcz
kkfio (207) -> iayrwd, abofflv, cpsmrch, ndtcui
wkdxdem (78)
dnslk (50)
civkkh (38)
bzqmgl (91)
gxtnep (43)
hemhd (54)
nzzved (110) -> vexun, sekcqad
tnejqkf (47)
jenxqco (14)
tlsdvhf (79)
kcltvch (65)
tqyheu (18)
csoko (1055) -> hnwpfl, rstsr, icnwzox
jmgsk (54)
rayzwrp (244) -> pydrzyk, hbomk
dmqhi (31)
wsctytx (26)
kjxac (65)
vrryj (177) -> nssvbj, gzlfqg
vmvdhds (33)
iuuve (90)
wbugvc (938) -> hpmynx, cznyy, yjqbsxx, yzcddkw
hnrwa (78) -> fbzro, iempnd, ojrsv
inojzm (100) -> zxlfwi, homdmyc
cvvex (75)
thumfdk (365) -> hcvvfm, oyuklmp, vtnddpz, egzpkj
wkqnq (8)
ulcnxii (59)
kdccrl (96)
hpmynx (112) -> kdmprsg, jvdawi
iempnd (35)
rqzkom (305) -> bvdqhfs, ubiuve, vqlqq
stuom (189) -> tffhcft, lzwplw
bjqzgqj (75)
ygfcl (69)
qakcvf (117) -> udvdho, gxtnep
vxlonb (88)
tjlsmrz (18) -> pmznzoa, dtifm
golth (22)
xdmqa (18)
xsilcvz (92)
oudxhh (81)
homdmyc (25)
zyrztc (15)
mmngri (60)
vqsxe (220) -> prxex, jhggy, zkmdfh
lyeoeff (74)
mcnek (54)
ckcpovl (55)
vqmeer (359) -> ijbth, phoic
zhgql (35)
zalahl (48)
toccxvy (58) -> ryecm, embmhv, wutkvkd, qlxioka
sgvbpct (13)
ubaaa (2460) -> ivkvhf, tjzut
yxmycw (1258) -> mokvas, lzcant, vrryj
mxtqhi (286) -> jwpbg, kizufjn
ofqav (13)
gqpqzrh (49)
jgjbcux (23)
vojblx (143) -> ytcgcq, bltsiq
qrbiq (7)
qnofu (64)
tcvtul (372) -> vxlonb, xcvdoi
spcpfe (255) -> tseydw, cfdumg
ohyhw (153) -> xttop, hnocmo
dqpcn (310) -> witxvcj, qshxib
btxts (816) -> klgsp, thumfdk, kbothlh
ezptzx (86)
dtifm (68)
gicwtf (254) -> beocjuy, kgfums
wvawj (59)
cddbi (255) -> ekrym, cysyc
rimlwoh (64)
wutkvkd (25)
hqlni (74)
vwzein (18)
nxrlaw (74)
nhrla (34394) -> idfyy, nwpmqu, owayyaw
whotly (17)
prxex (5)
mkpgx (468) -> thunt, lujir, xjoid
qmklslb (19)
lokvk (67)
xecai (12)
mucnt (77)
daaldt (68)
rtatr (142) -> xkjzrg, btufku
hpouwfs (22)
nclvb (35)
dnirbtx (49)
pykcza (52) -> gkbpz, vzbywuf
djplc (18)
hflkio (88) -> elhmwsx, iovcix, twffuag, sygcnhv
nkdtsf (33)
cvzvo (139) -> gfrwxw, gjphrw
ilgee (25)
zyajdwf (273) -> eymsjfd, dmqhi
rwlmsx (212) -> djsbpg, qrbiq, fnsceun, tdymtd
uhwtkvo (66)
hzzlebr (20)
mundgs (93)
ytjaofr (149) -> hmfvzi, bzplleg
epbevf (26)
ptydckb (47)
hjuzxv (74)
eljbay (138) -> rntsalv, llpxo
kvnom (87)
qvdrme (205) -> ffjshhj, kcltvch
zbwrrsc (68)
jmifnxw (42)
pfojn (42)
wgdrxl (85) -> notot, jogicnh
wxzenj (224) -> swojvy, sidmmmy
iekjt (91)
quhxdb (28)
pydrzyk (50)
hboommj (21)
vbiyre (65) -> kdrmsgh, lngffo, dqyifwc
sqehayt (1007) -> vyzpzww, hmqam, qakcvf, dyadgtm
keuqd (30) -> zrypv, zogeax, yyjfus
tyjzoq (24) -> utvyxj, pwuhv, ombqq, inattlb
xbfmp (37)
aytrde (56) -> hfvkmf, vyzksry
oufikpd (23)
qpfybmv (189) -> znkru, cjlvlm
hgsdq (288) -> bvxiqzm, jmifnxw, pfojn, bltkr
nopjkom (1447) -> ayxuibs, krcntq, hbbhm, rehezo
wtnmryv (92)
mexagfy (235) -> leoti, uqwbtx
bmsje (87)
jkoyzxm (32)
egzpkj (12)
hirvz (774) -> cmhoj, eljbay, inojzm
mxdluii (90)
unuwu (41)
ekuohb (24)
xzqgkqn (87) -> mbqdugj, lujurf
rzehh (98)
dqqyiwm (61)
oqialc (192) -> uhptzfg, quhxdb
jwjuylx (63)
ebwifj (14)
grkauy (39)
hvizfxx (83)
pyxypca (64)
gdckok (72)
yccfitx (69)
eisyowo (83) -> jjzbzsb, vbiyre, oqialc, uzxjxjx, tgjdv, ydhoryg, kdersld
mjwviex (79) -> gnupj, lazcc
grokih (202) -> wsctytx, qvksmrd
vpfoaw (36)
wtxndn (94)
lazcc (74)
pxzzw (55) -> dhccilz, rvzppdg, qcwhzgo, htlovrb
jjzbzsb (88) -> cnfcuww, gtitbbk, myzkj, rfsrdn
hrjil (71) -> ftmftoa, vdekve, lizqvr, rtkydv
ddblq (28)
eedxiav (257) -> jdeqa, tbmflh, zpjxsi, kgamsy
ywxionz (239) -> gdkll, xecai
ateol (34)
hlcahpm (90)
rntsalv (6)
zcvzrja (98)
kbbyj (87)
btufku (80)
hygdtn (7)
yxbwlf (98)
ivkvhf (9)
mevvf (60)
jdeqa (28)
jhdmh (956) -> qkilfj, xzzar, gkqrml
qlpft (57)
delev (30)
ndoecxy (89)
lfhmte (334) -> qmklslb, ekcuavb
fakqhi (1370) -> kqhggwy, zvpaj, zbxbe
mzvjxgp (41)
xuqhpz (49)
rkfknhv (28)
fbzro (35)
vrmevdy (35)
mysslj (49)
aobgmc (341) -> tajeklj, rkczq, ohyhw, zceovs, gudpriq
cocplr (67) -> opczxnj, ulcnxii, hjqvntn, wvawj
fnsceun (7)
yjqbsxx (122) -> ybtkkgv, fgyjop
atxtq (181) -> oufikpd, czacja
qvksmrd (26)
gqmjvky (137) -> xvhnaf, cwspi
bpusqb (84)
ftmftoa (101) -> nlixy, mckkn, rpbawy
aqshqpo (56)
xsnmq (46)
bltsiq (80)
towwl (54)
anhldnx (2024) -> kvnom, jbprgm
ksioqg (8)
nnunune (227) -> jmgsk, mefyd
jvdawi (56)
icnwzox (236)
qiikh (127) -> zmveluw, ycncnr
pjmwkz (63)
pvqid (50)
fivcv (64) -> pyydxvi, tzoefdo
zacrh (44)
smylfq (44)
qcwhzgo (2040) -> aetlth, kqbrwt, ualcokx
uwauv (196) -> daojy, sfyqi
mjfbr (910) -> ruuovw, kghzy, psyem
efcff (79)
kzflj (19)
shethb (91) -> qsgpsfr, fmtox, pseltr, gziopi, ohqlwmr
yylzxb (6)
ybtkkgv (51)
olxmnkc (79) -> wtnmryv, encean
cysyc (8)
tkiheq (21)
xkjzrg (80)
vtnddpz (12)
kgfums (45)
rrlwo (41)
rujggz (68)
beidb (63)
xcvdoi (88)
xghng (17)
vmoqov (43)
pekzuyh (29)
fheklq (66) -> crdlymr, vgsuq, lqspkzw, wbugvc
wodhzc (18)
rlzbv (92)
ycuajn (185) -> iizggi, ilgee
zjrpxp (73)
sogepf (66)
gbecv (78) -> hlcahpm, mxdluii, qczgclr
xzvbcms (92)
wcklpgi (14)
wuhossn (96)
dlrfwee (35)
rfsrdn (40)
akkrsv (108) -> ontcbns, mrydp, flqjd
uqjcaa (54)
ixcxv (49) -> ruvrw, rwqjiz, towwl
kdrmsgh (61)
gtxlyzz (32)
udvdho (43)
lelvcai (28)
ivbwdn (121) -> hpocx, bwpqytq
bvdqhfs (6)
wrxzti (62)
yoofo (79)
oqrvpt (323) -> pyjzb, wkqnq
bfxdtkg (93)
yrmmga (36)
tvmvvxn (55)
hlhpm (187) -> xqnan, ykubvpo, bxsxr
ovalfky (66)
wpner (54)
gljri (96)
jpedzjk (153) -> byphua, nxzafkd, ccpek
ydhoryg (65) -> apcztdj, wfuxy, satie
zxsgnx (105) -> pnumlg, gouyeqw
zyqfc (63)
evxjdeo (57)
uspfk (54)
rwqjiz (54)
griwu (72)
mcgaqx (68)
iqzkp (103) -> rkfknhv, lelvcai
edmsh (77)
uavzab (17)
seleq (87)
wsozlg (7)
dgvvi (93)
svbmkbx (196) -> golth, casbq
szoomk (26)
bcima (78)
cyasn (4978) -> hlhpm, fmmhxab, chirgx
hfvkmf (99)
fjonxe (73) -> xbfmp, yhiwu, kxchm
wnoer (81)
zaouq (96)
gkqrml (109) -> umitnao, bkcgx
ppythr (73)
qozshd (14)
namzem (66)
cjlvlm (32)
ohcfrxm (85) -> xhxctp, wxpmbu
iqwspxd (897) -> gqmjvky, wyzmc, mbzme
chirgx (46) -> gpmvdo, fivcv, aelsfhi
pyobp (78) -> gmusjd, pqfnj, xbhcwe
kspoky (9)
gtkqi (56) -> cquptt, cdeji
twgcf (49) -> lokvk, cpxwa, yovtgg, nzzwed
plsic (60)
pmyqol (66) -> ayixid, efcff
hnmba (22)
ktbtfdb (56)
yyjfus (85)
rvzppdg (45) -> airnuh, mfvqvf, begmhqg, cykvv, wipzuag, fmstmh
vebyb (30)
yasoqri (41)
gjphrw (85)
caqjohx (25)
oqiynm (9)
lydynp (73)
dclnnlg (14)
nocugh (81)
tqzbg (15)
elqlx (81)
mckkn (67)
lujir (152) -> pvqid, keiakhg
mywhdsm (47)
oafxzu (27)
fgumszu (98)
hnwpfl (89) -> gqpqzrh, nlrwlj, gxvketg
xrvno (49)
kjdjj (225) -> keuqd, yompk, grxqt, ocxbgp
vyzpzww (163) -> npipd, hzzlebr
oqzcbx (81) -> wuhossn, ebhag, zaouq
twffuag (92)
nujgng (82)
xbhcwe (98)
bvugv (199) -> xdmqa, qqszul, wodhzc
vgsuq (1510) -> oanoax, swcxes, qmelelp
cwflw (27)
yraktfn (27236) -> pxzzw, igwew, jjzlrku
iqeynjk (17) -> dccvh, cvzvo, kcjujcr, phqplx, spcpfe, dygrnnf
vgowu (30) -> mgiumh, pyxypca
jjzlrku (635) -> fuwbaq, lcwpm, oahpf, anhldnx
zkmdfh (5)
dvskig (22)
zaitni (83) -> iqagnh, ixckwlm, kfvvzd
ikthp (51)
jvpob (76)
cpxwa (67)
sphwh (88)
mlbjc (81) -> fylao, ggilocf
rwmci (63) -> qnofu, rimlwoh
fluuo (51)
exvmk (78)
jgdqi (3125) -> mxsvay, hrjil, fhtktd, qqvgeq
aplal (124) -> ezotk, mithbv
gouyeqw (27)
iqagnh (47)
xfjafp (78)
gvaie (153) -> cpwdhw, bjqzgqj
ijbth (5)
zduooao (93)
tjlrb (78)
emeyn (35)
zblcbd (34)
xxtki (88)
nxgjqaf (1807) -> ubaaa, hjxhx, uyofsmv
xqnan (87) -> ckbuzb, rutqvq
xyquxix (70)
pwuhv (72)
sygcnhv (92)
qjlfwtm (19)
vkkgwbr (8)
casbq (22)
zeisn (95)
rplqlc (63)
ewsqqum (99) -> mojwgp, zuxgf
mojwgp (64)
dexul (230)
kdmprsg (56)
amifh (43)
notot (63)
byphua (60)
vfjayw (88)
gfrwxw (85)
vrpoaq (41) -> mwzpa, pfhjtw, rthxl, ppythr
wngqx (26)
obgmlzf (67)
daojy (17)
vxnwq (61) -> kjhrii, ulovosc, ytjaofr, vrgblbn, rwmci, mlbjc, vblppqb
yzcddkw (40) -> hvnzfbd, hqnonqc
iiswvjq (62)
yeerc (68)
ycncnr (42)
cmrcpf (294) -> onbptkd, qxsxzth
zbtlfr (35)
paqggr (84) -> ettsdu, iekjt
prfbji (14)
bodpwem (244) -> jkoyzxm, gtxlyzz, qweyxa, bbqzlo
ccpek (60)
buzjgp (65)
ahwtsi (54)
ckbuzb (60)
mrflo (82)
alcfp (63)
engay (35)
fxeka (18)
ohqlwmr (112) -> tdcxeia, maaid, fiygpep, zhgql
iizggi (25)
qcqpavg (364)
siwvncp (54)
lpjxpx (63)
ryecm (25)
xrsaryj (115) -> qcrxve, iuuve
dterxr (244) -> hfxmz, mpble
kcjujcr (207) -> eyavk, ikthp
sjommm (98)
lneqx (456)
dccvh (201) -> uipvt, iqeap, gbuilbn, oafxzu
duzorty (20)
mdfae (11)
pmavka (48)
ekrym (8)
logpgb (2713) -> wamxgvn, ozqsvif, olnpj
pxrxqs (78)
thunt (94) -> tlsdvhf, yoofo
ogkucp (84)
xroaal (43)
czacja (23)
xbaytg (5)
embmhv (25)
ahsef (41)
cfbjnxb (799) -> ujpka, fjonxe, slacopj
itusrhj (277) -> gscng, pekzuyh
vhruv (34)
fdvtn (44)
flrtvno (21)
fiygpep (35)
fhtktd (1103) -> xxtki, pgnulg
dirvqby (72)
codroxx (49)
fswirnb (98)
rvzqqr (290) -> wafsr, pwhrvu
peocao (235)
drleu (70)
ygszhn (86) -> lnuqdd, tjlsmrz, yomawy
ixbxszv (43)
nzfjwtq (67) -> douggpq, ezptzx
wfmxgw (98)
gzuqs (80)
ujpka (84) -> bhpvfr, dnslk
ebjpdvd (19)
mykkoc (91)
pyydxvi (95)
prybce (62)
smpmp (9)
nfvns (183)
rvqubk (81)
ezvdo (74)
gdkll (12)
tzoefdo (95)
vzdmsv (224)
vcusbhv (196) -> ospfv, wfvtfos, yjdsnqu
beocjuy (45)
zjxlr (6)
dlxubg (344)
kfvvzd (47)
zrypv (85)
aonpk (25)
icsrp (14)
pjthjam (286) -> ofqav, sgvbpct
fgyjop (51)
rstsr (68) -> xnleu, gfvjqj
xgrjpl (92)
rlzobr (89) -> ctifv, ffevqd, kbbyj, otgnir
vbvctl (87)
lqspkzw (90) -> rvzqqr, avsse, rocllr, cpiscj
mbqtji (392) -> paqjozd, wsbpne, tncexxs
vuumtry (63)
zpjxsi (28)
cykvv (247) -> yeerc, qfyrdo
chgpk (281) -> sxygbpo, hkyqakf
wchlqxi (72)
lzwplw (64)
daonbjx (790) -> ohcfrxm, yinhnv, bvugv, pgeoixp, qpfybmv
ffevqd (87)
gnhcs (78)
yjdsnqu (5)
vjugmg (73) -> qekol, jjdcuql, atdrk, rqzkom
swcxes (60) -> bzwhd, ekuohb
hmfvzi (21)
wwcrqwq (54)
iezlg (71) -> maugts, nxgjqaf, liibv, qrvmp, nwyqp, mjfbr
erphv (31)
vpxbz (48) -> qaalu, gtutr
sbsustu (91)
uvwnhot (14)
mbdwm (65)
cwspi (15)
fnvxe (104) -> bwmckc, vxftbc
qmxjyg (56)
hkyqakf (27)
uyofsmv (1214) -> ukdbm, iojjekn, dterxr, dvetl
glbipl (21)
yjjrrjj (93)
xnleu (84)
dyeffd (64)
mpbui (52) -> bcima, yowna, hvpzbd, smzzu
hvnzfbd (92)
vguwn (40)
tdcxeia (35)
dhccilz (471) -> wxzenj, tyjzoq, azrdj, mxtqhi, pjthjam, zzjicx
mfvqvf (355) -> rcdic, ebwifj
qsjue (81)
kgnbx (56)
efsdxm (74)
niojmd (95)
uzxjxjx (68) -> plsic, mmngri, mevvf
drbjnk (99)
hqnonqc (92)
opczxnj (59)
iwumx (41)
jwpbg (13)
aetlth (7) -> tnejqkf, mywhdsm
ujjksl (169) -> ixhsq, fluuo
ygqjcm (74) -> uqpxyi, uxmfcyr, oudxhh, iktols
oyjjdj (678) -> svbmkbx, lxpkrf, vayyag
pnumlg (27)
hbyxgv (94)
ivhzxr (14)
geajywv (63)
kjhrii (135) -> ddblq, ehkhs
rehezo (56) -> vuumtry, rplqlc, zcakvl
gunfz (80)
airnuh (369) -> hygdtn, nzrbmfg
ruejmc (283) -> icsrp, ivhzxr, uvwnhot, jakny
ikpyx (82)
zxlfwi (25)
ocxbgp (285)
qfsbvqe (39)
htmjx (48) -> tptdvct, smhzr, dyeffd
ukdbm (44) -> rskopr, rujggz, mhihjb, jimigk
lqtuij (66)
jogicnh (63)
vqlqq (6)
bkcgx (80)
fxsmo (85)
icoiqa (256) -> ljscsoa, sxqnium
ehhrom (334) -> aqshqpo, kgnbx
tgrfyrx (6071) -> urepv, ippmv, yvirt, mofdlro, teeunu, jgdqi
kttzsv (49)
hpmag (88)
jjixrr (44)
rjkzf (147) -> fxeka, pealz
rtsji (96)
wfuxy (61)
dzjef (22)
gfvjqj (84)
lslsl (28)
lizqvr (101) -> zaeyze, ppbgib, obgmlzf
rcdic (14)
ykiwb (105) -> drbjnk, vwokfc
dygrnnf (153) -> pxrxqs, xfjafp
csbdh (28)
tffhcft (64)
eilgcny (62) -> ldfybwl, gzuqs, gunfz
hfxmz (36)
spqwtg (1089) -> foaubeo, ehhrom, fcuhw
gtitbbk (40)
wsbpne (15)
gpcxuo (81)
cpsmrch (333)
fhmkuo (266) -> zeisn, niojmd
ckifyf (23)
ppbgib (67)
titychs (25909) -> fqmyi, logpgb, cyasn, fheklq
hlyfdr (26)
zmveluw (42)
kqhggwy (167)
cakob (96)
wipzuag (187) -> rerviwo, sjommm
hvpzbd (78)
vexun (72)
fuwbaq (13) -> ytzrx, pwyiwkf, rlzobr, mbqtji, jpnfrsb
fqmyi (3349) -> wxirji, cfbjnxb, shethb
xbgmzxd (144) -> wsozlg, lzqtms
paqjozd (15)
jakny (14)
susknu (81)
olnpj (87) -> rhsdbfh, vqmeer, oqzcbx, eedxiav
hjrzrli (62)
tjzut (9)
kizufjn (13)
iduxx (9)
wfvtfos (5)
dhahfgv (31)
oahpf (630) -> pmyqol, zaitni, xxpfmp, aplal, vzdmsv, paqzzv, fnvxe
utvyxj (72)
andixsk (39)
nglumw (49)
cdeji (59)
ynxfzsu (73) -> amifh, xroaal
hpljf (37)
oanoax (52) -> csbdh, tfdjhaa
jbxcafx (97) -> qlpft, evxjdeo
xaplszi (689) -> qgbtnil, icoiqa, vzfebn
sbtyi (91)
wnhmooe (37)
qekol (35) -> gljri, cakob, pvdbhh
lkffdz (81)
hjxhx (42) -> germn, ycrxr, cmrcpf, tbrxke, gbecv, wnakg, epdqjdp
ualcokx (35) -> nkdtsf, vmvdhds
hwofq (37) -> izjbi, dqqyiwm
bzmra (34)
gnuywz (30)
rutqvq (60)
kvgrf (38)
rpbawy (67)
uunjwu (70)
nlrwlj (49)
ettsdu (91)
pyjzb (8)
ehhlk (75)
vdekve (292) -> xbaytg, rvftpif
ycrxr (312) -> twvlr, djplc
pdewbw (74)
xzzar (239) -> tqzbg, zyrztc
hwcbsyu (167) -> wjjmh, uwwyv
msowvgh (6)
jptxyhp (89)
ulkzj (39)
ytzrx (275) -> uspfk, wpner, wwcrqwq
lunivx (78)
tfdjhaa (28)
lzqtms (7)
qsgpsfr (96) -> utneufs, exvmk
qmvebxb (43) -> hjuzxv, nxrlaw, pdewbw, hqlni
qkilfj (99) -> mohya, fxsmo
twvlr (18)
fejmhpg (190) -> kvgrf, civkkh
lzcant (149) -> gnoywf, ebjpdvd
fcuhw (390) -> qpcmzl, ujdil
qlxioka (25)
tyealpm (72)
ndbzyu (68)
djqtfp (68)
wlbua (48)
xuhchjm (80)
mwzpa (73)
dqyifwc (61)
tovvj (8)
rthxl (73)
bhpvfr (50)
geiethw (35)
yinhnv (22) -> mucnt, edmsh, apgzt
abofflv (105) -> vjmwzo, jvpob, ddpmrsd
ayxuibs (89) -> kgxseg, tjlrb
ebcygk (42) -> cehqdz, qmxjyg, pwpmx
ebhag (96)
pqwzgz (189) -> jgjbcux, powwpec
pmznzoa (68)
fylao (55)
bbqzlo (32)
chxurcq (54)
egdccd (54)
yghyn (72)
zuxgf (64)
apgzt (77)
ujdil (28)
lwmblwr (208) -> ingwpue, jfwho
oyvaqjr (80)
maaid (35)
pcnbkxm (93) -> bfxdtkg, zduooao, mundgs
gscng (29)
tolty (336) -> vwzein, tqyheu
nzzwed (67)
ruhyv (29)
wxpmbu (84)
izjbi (61)
jbprgm (87)
jpnfrsb (290) -> codroxx, xrvno, pnpge
hcvvfm (12)
yowna (78)
mithbv (50)
qcxfwey (81)
pgnulg (88)
bxucoyp (70)
sxqnium (51)
bzwhd (24)
tbrxke (250) -> kxtzbj, zfuqmcg
hnocmo (30)
hbollnl (225) -> qrbvsw, mcnek
pfhjtw (73)
mrydp (324) -> vswcvmu, cwflw
envbl (113) -> ehhlk, cvvex
swojvy (44)
gzlfqg (5)
vblppqb (164) -> qhwkoc, oqiynm, kspoky
rocllr (88) -> tvixzc, seleq, bmsje, vbvctl
vlmzfaf (91)
jfwho (78)
llpxo (6)
pwhrvu (73)
kxxhn (126) -> ahsef, rrlwo
evojkum (21)
cpiscj (436)
qhwkoc (9)
grxqt (233) -> mtzvap, wngqx
rhsdbfh (185) -> rlzbv, xgrjpl
mbqdugj (62)
aelsfhi (58) -> rzehh, fswirnb
douggpq (86)
ysrwm (206) -> zkzpbbp, xsnmq, ofndvr
fjtgkp (78)
tsfrlzw (82)
kghzy (1262) -> gvaie, ykiwb, wztfz, vojblx, cocplr
gzpcl (1291) -> qgzaj, wrxzti, hjrzrli, qklbf
ykryfdg (1297) -> aoqukac, gtkqi, cjhcn
kqitg (203) -> gnuywz, wwolc
bwmckc (60)
yovtgg (67)
irducr (56)
encean (92)
tseydw (27)
tyhtbv (28)
macxvi (179) -> oyvaqjr, arqvl
qklbf (62)
hpocx (59)
qccwy (85) -> yjjrrjj, dgvvi
mehtsc (84)
djupte (20) -> wnoer, qcxfwey, rvqubk, gpcxuo
meuyumr (810) -> vpxbz, mhpbfn, qhutc
crdlymr (1705) -> ixbxszv, vcjpuw, vmoqov
suhcj (14)
lujurf (62)
pjqaa (118) -> bzmra, ateol, zblcbd, qwtlvuj
ddpmrsd (76)
foaubeo (70) -> hbyxgv, totzxaf, dkpmgrq, wtxndn
ykubvpo (133) -> hpljf, wnhmooe
ljscsoa (51)
wztfz (269) -> whotly, evpryza
qaalu (74)
zzjicx (146) -> hvizfxx, xlukbym
ykvqh (305) -> uavzab, xghng
tbmflh (28)
bpazmfd (41)
bwxgrhf (14)
vswcvmu (27)
nnhlcn (201) -> emeyn, vzyxst
vzyxst (35)
qrvmp (426) -> xaplszi, jhdmh, hzcmmh, kkhvw, csoko
kmrbuvq (31)
uqpxyi (81)
tstuc (59) -> sphwh, hpmag
kbothlh (149) -> uhwtkvo, ovalfky, lqtuij, sogepf
xvhnaf (15)
qzsjiw (40)
krnjk (82)
rifmmf (98)
cnqemd (48)
ombqq (72)
xmvxrop (48) -> eaumqtc, dqpcn, ygqjcm
pwpmx (56)
jhggy (5)
ruvrw (54)
qcrxve (90)
ldfybwl (80)
eyavk (51)
smhzr (64)
mtvxp (63)
gmcebvw (26)
hpbbqmn (84)
wafsr (73)
homrc (78)
znnjzzw (8) -> sbsustu, sbtyi, clzgzgc, mykkoc
umitnao (80)
tncexxs (15)
qwbkv (92)
tipdlf (61) -> dnirbtx, kttzsv, mysslj
wnakg (166) -> hpcafa, emecx
fxzvbzr (51) -> qqbdtow, xuhchjm
tgjdv (80) -> ogkucp, bpusqb
hiaoc (31)
onbptkd (27)
yhovo (78)
zogeax (85)
qqbdtow (80)
leoti (41)
yomawy (154)
qfyrdo (68)
rerviwo (98)
liibv (8767) -> toccxvy, xbgmzxd, vgowu
uxmfcyr (81)
cfdumg (27)
emecx (91)
hbbhm (137) -> hacgqe, egdccd
zvrld (46) -> xsilcvz, evxjdo
ixckwlm (47)
ruitlxx (67) -> jbiaxln, ekfwsv
wwolc (30)
ixhsq (51)
rutmxs (14)
sekcqad (72)
haeee (400) -> qozshd, prfbji, jenxqco, wcklpgi
uqwbtx (41)
phoic (5)
kqbrwt (43) -> ruhyv, xxpauyc
btzbl (78)
ziock (49)
yycys (11)
tvixzc (87)
frucbsg (69)
ruuovw (41) -> hflkio, lneqx, fhmkuo, haeee, jvefqe, hgsdq
wamxgvn (511) -> ywxionz, olxmnkc, kqitg, envbl
qrbvsw (54)
evpryza (17)
zjxyreo (34) -> gvuwq, awpvs
sfyqi (17)
gtutr (74)
ctifv (87)
yjjewyt (43)
mofdlro (789) -> aplauwh, tcrcyis, bfkpjdl, akkrsv, lxshx, xmvxrop
hjqvntn (59)
wxirji (553) -> pmvdtmm, fejmhpg, paqggr
qgzaj (62)
qqszul (18)
kgxseg (78)
iktols (81)
orzwmml (478) -> engay, zbtlfr
gkbpz (78)
inattlb (72)
jjdcuql (183) -> xyquxix, uunjwu
kkhvw (1133) -> zjxyreo, fgptt, ebcygk
rrsfv (11)
atdrk (285) -> kzflj, qjlfwtm
nrarwj (75)
tdymtd (7)
bvxiqzm (42)
ehkhs (28)
cvpoqqk (211) -> delev, vebyb
owizuw (62) -> ixcxv, qiikh, wgdrxl, xzqgkqn, vcusbhv, fxzvbzr, jbxcafx
kgamsy (28)
cmhoj (12) -> frucbsg, yccfitx
kbgmlab (43)
epdqjdp (244) -> epbevf, hlyfdr, szoomk, gmcebvw
vrgblbn (191)
ndtcui (239) -> umymwd, ptydckb
xjoid (154) -> xuqhpz, nglumw
mefyd (54)
cpwdhw (75)
jwasx (246) -> tyhtbv, lslsl
pwyiwkf (281) -> wkdxdem, yhovo
xcndr (8)
yvirt (960) -> nopjkom, spqwtg, fyqlqkg
xttop (30)
nwyqp (1965) -> yxmycw, sqehayt, eisyowo, ykryfdg
clzgzgc (91)
agsrs (185) -> qsnjuqh, wcztr, xrsaryj, ifqsqyz
ojrsv (35)
gnoywf (19)
wyzmc (97) -> dlrfwee, vrmevdy
tesql (72)
ejsitta (83) -> mehtsc, hpbbqmn, eipyu
ekfwsv (58)
xxitunl (69)
jvefqe (339) -> ulkzj, jflns, grkauy
vwokfc (99)
mtzvap (26)
vzbywuf (78)
cquptt (59)
fmstmh (383)
qgbtnil (86) -> daaldt, ndbzyu, yrotnfh, djqtfp
qshxib (44)
nclav (91) -> vhruv, vjnejlj
azrdj (176) -> zbwrrsc, mcgaqx
cehqdz (56)
zfuqmcg (49)
tkhjz (73)
pealz (18)
hbomk (50)
oyuklmp (12)
klgsp (89) -> uhfiqwc, susknu, nocugh, qsjue
uwwyv (36)
mhpbfn (196)
krcntq (165) -> duzorty, mcvuku, sneog, bnetz
dkvqe (222) -> qzsjiw, vguwn
ingwpue (78)
smzzu (78)
bzplleg (21)
uhptzfg (28)
qwtlvuj (34)
arqvl (80)
bnetz (20)
yfolyk (48)
flqjd (84) -> yxbwlf, fgumszu, wfmxgw
igwew (5332) -> kjdjj, agsrs, vjugmg
vjnejlj (34)
svtcvi (14)
lnuqdd (154)
evxjdo (92)
vvtfwwb (74)
snhww (39) -> yghyn, tesql
cjhcn (124) -> aonpk, caqjohx
iovcix (92)
mgexekz (212) -> namzem, rjksjq
ajyyjfx (75)
bwpqytq (59)
nvmqchp (23)
asosowy (56)
guttanj (208) -> tovvj, vkkgwbr, xcndr, ksioqg
utneufs (78)
zcakvl (63)
begmhqg (87) -> lyeoeff, efsdxm, vvtfwwb, ezvdo
pmvdtmm (220) -> ckifyf, nvmqchp
fmmhxab (13) -> zxsgnx, iqzkp, ynxfzsu, hwofq, nclav
zaeyze (67)
djsbpg (7)
rqwgj (15) -> nhrla, titychs, tgrfyrx, aoxky, iezlg, yraktfn
lxpkrf (196) -> vkrlz, dvskig
nlixy (67)
gbuilbn (27)
vayyag (56) -> qwbkv, xzvbcms
qsnjuqh (61) -> btzbl, lunivx, fjtgkp
aoqukac (50) -> iiswvjq, prybce
ekcuavb (19)
tbxxc (372)
ippmv (21) -> btxts, daonbjx, zebuqzh, gyqrut
zvpaj (69) -> zcgaxsi, ziock
bltkr (42)
dnflzcz (16) -> dkvqe, eilgcny, rtatr, jwasx
jbiaxln (58)
qmelelp (80) -> epovby, suhcj
mpble (36)
ebtoke (143) -> pmavka, wlbua
pqfnj (98)
kxchm (37)
cznyy (224)
ytcgcq (80)
phqplx (85) -> asosowy, irducr, ktbtfdb, vfgomle
umymwd (47)
zceovs (25) -> koxyrpn, emhnlu
rtkydv (83) -> zjrpxp, lydynp, tkhjz
ayixid (79)
xlukbym (83)
stketdd (157) -> gzdtco, vfjayw
yompk (162) -> unuwu, yasoqri, mzvjxgp
slacopj (44) -> bxucoyp, drleu
emhnlu (94)
mbzme (101) -> hpouwfs, hnmba, dzjef
mohya (85)
totzxaf (94)
ifqsqyz (223) -> vpfoaw, yrmmga
lngffo (61)
xxpauyc (29)
qxsxzth (27)
zebuqzh (45) -> ejsitta, chgpk, zyajdwf, itusrhj, nnunune, qvdrme
ubiuve (6)
mcvuku (20)
uipvt (27)
qqvgeq (359) -> zvrld, nsuysii, uwauv, dexul
gejaump (212) -> iduxx, tiirxay, smpmp
sidmmmy (44)
qjnela (266) -> andixsk, qfsbvqe
idfyy (51) -> vxnwq, meuyumr, oyjjdj, iqwspxd, aobgmc
#!/usr/bin/env python3
class Tower:
known_towers = {}
def __init__(self, name, weight=None, children=None):
"""
Initialize a Tower instance.
This method should not be used directly.
`Tower.retrieve_or_create` is the correct method to use, as it
retrieves an already created instance if present.
"""
self.name = name
self.weight = weight
self.children = children or []
def add_child_from_name(self, child):
"""
Add a child with the given to the tower's list of children.
This utilizes `Tower.retrieve_or_create` to utilize
already-created instances.
"""
child = self.__class__.retrieve_or_create(child)
self.children.append(child)
def total_weight(self):
"""
Calculate the total weight of a tower, including all sub-towers.
"""
if self.children:
return self.weight + sum(child.total_weight()
for child in self.children)
else:
return self.weight
def is_balanced(self):
"""
Return a bool representing if a tower is balanced as defined by the problem.
"""
return len({child.total_weight() for child in self.children}) == 1
@classmethod
def retrieve_or_create(cls, name, weight=None, children=None):
"""
Retrieve, create, or update an instance of Tower.
This method should be preferred to `Tower.__init__`
"""
if name not in cls.known_towers:
cls.known_towers[name] = cls(name, weight, children)
tower = cls.known_towers[name]
if tower.weight is None:
tower.weight = weight
return tower
@classmethod
def find_root_tower(cls):
"""
Out of all the towers created so far, find the root.
"""
parents = {}
for tower in cls.known_towers.values():
parents.setdefault(tower, None)
for child in tower.children:
parents[child] = tower
return next(tower for tower, parent in parents.items()
if parent is None)
def __repr__(self):
return (f"{self.__class__.__name__}"
f"({self.name!r}, {self.weight!r}, {self.children!r})")
def parse_input(input_file):
for line in input_file:
line = line.strip()
# Here we use a sort-of obscure Python 3 feature.
# It is best explained by example; Suppose we have the line:
# `a, b, *c = [1, 2, 3, 4, 5]`
# The tuple (a, b, c) would be equal to:
# `(1, 2, [3, 4, 5])`
parent, weight, *rest = line.split()
weight = int(weight.strip("()"))
tower = Tower.retrieve_or_create(parent, weight)
if rest:
arrow = rest.pop(0)
assert arrow == "->"
for child in rest:
child = child.strip(",")
tower.add_child_from_name(child)
return Tower.find_root_tower()
def find_correct_weight(weights):
seen = set()
for w in weights:
if w in seen:
return w
seen.add(w)
raise ValueError("The input is too ambigous!")
def adjust_wrong_weight(conductor):
# If we've accidentally hit a conductor which is balanced, either the
# algorithm is wrong or the whole tree is balanced.
# This is just an assert because for the problem the algorithm is
# guaranteed to work.
assert not conductor.is_balanced()
# Find out if any of the children are the culprit, and if so investigate
# them instead..
for child in conductor.children:
if not child.is_balanced():
return adjust_wrong_weight(child)
# Once we've found the true culprit (i.e. the one where all of its
# children but one are correct) we have to figure out which child is
# creating the issue.
weights = [child.total_weight() for child in conductor.children]
correct_weight = find_correct_weight(weights)
for child, weight in zip(conductor.children, weights):
if weight != correct_weight:
# To figure out what the weight of the wrongful node should be,
# we first figure out what the correct *total* weight is, then
# subtract the weight of all the wrongful node's children.
return correct_weight - (child.total_weight() - child.weight)
def main():
with open("input.txt") as input_file:
conductor = parse_input(input_file)
print(adjust_wrong_weight(conductor))
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment