Finish day11, part 1

This commit is contained in:
ktkk 2025-12-11 12:15:11 +00:00
parent 5a8bf21386
commit 37b740f07a
2 changed files with 683 additions and 2 deletions

View file

@ -1,7 +1,79 @@
const std = @import("std");
pub const title = "Day 11";
pub const title = "Day 11: Reactor";
pub fn run(_: std.mem.Allocator) !void {
pub fn run(allocator: std.mem.Allocator) !void {
const input = @embedFile("./input/day11.txt");
//const input =
// \\aaa: you hhh
// \\you: bbb ccc
// \\bbb: ddd eee
// \\ccc: ddd eee fff
// \\ddd: ggg
// \\eee: out
// \\fff: out
// \\ggg: out
// \\hhh: ccc fff iii
// \\iii: out
// ;
var lines = std.mem.tokenizeScalar(u8, input, '\n');
var devices: std.StringHashMap([][]const u8) = .init(allocator);
defer {
var outputs_iter = devices.valueIterator();
while (outputs_iter.next()) |value| {
allocator.free(value.*);
}
devices.deinit();
}
while (lines.next()) |line| {
const device = line[0..3];
std.debug.print("device = {s}\n", .{device});
var outputs: std.ArrayList([]const u8) = .empty;
defer outputs.deinit(allocator);
var outputs_iter = std.mem.tokenizeScalar(u8, line[5..], ' ');
while (outputs_iter.next()) |output| {
try outputs.append(allocator, output);
}
const outputs_slice = try outputs.toOwnedSlice(allocator);
errdefer allocator.free(outputs_slice);
try devices.put(device, outputs_slice);
}
var paths_to_out: usize = 0;
visitOutputs("you", devices, &paths_to_out);
var buffer: [8]u8 = undefined;
var stdout_writer = std.fs.File.stdout().writer(&buffer);
const stdout = &stdout_writer.interface;
try stdout.print("{d}\n", .{paths_to_out});
try stdout.flush();
}
fn visitOutputs(
start: []const u8,
devices: std.StringHashMap([][]const u8),
paths_to_out: *usize,
) void {
const device = devices.get(start);
if (device) |outputs| {
for (outputs) |output| {
if (std.mem.eql(u8, output, "out")) {
paths_to_out.* += 1;
} else {
visitOutputs(output, devices, paths_to_out);
}
}
} else {
std.debug.print("device {s} not found\n", .{start});
}
}

609
src/days/input/day11.txt Executable file
View file

@ -0,0 +1,609 @@
smx: otc
mmh: gvp
gbo: hyf alz
laa: vky qjq
vrn: tbs tsr jix
xyl: xel eur wdj
sxm: out
wsd: kua hpv jep
qsj: ulu xel eur wdj
xwa: mtd xxf hnw
kai: ehr kaj
uuj: you
owb: ixr bps pim eez ejn syt qrx hxw vsy ghl gfu cgh mpk kfj
vky: owb wlw qic
ysd: mkp jbf btz xgg gbk tvg iju amm dws ykz azc blh xld rpr uek rcl zzy jhu
rbc: ski xyl sdx wpw
zmc: pal lwb rns hex
cuu: vyo
bqf: kmy exx ish
jbv: ysa
aog: ayv kwq
fcq: qic xss owb
hyg: out
xoz: llx kra cqn bzn swe tdo vnz zos duw
gnq: eya
qmk: fcq lyd
ggp: brz eya
oit: yyy quh brz
hjl: dtj lnc jps fyr
sqg: xbz upq
nil: diq
xqa: jei ipw tkt
ond: fft jko dqj pxe
and: ahn izm esa
cqf: xss
rqa: ryb rwu ono fyb
jps: byj fmv shn
ccg: ond afk tbu
dta: ctq jbw whr smq
ztx: hlm ctr vgo maf fkj
sdx: xel eur
xwb: dds
clh: ktb
rtn: quh eya
dac: nxc vug eou
nvh: kmf yga wtv
xgw: kep unr lju mtm
mdx: qmk fwk fbd
tbu: fft dqj pxe
vil: lyz aek
ona: zjk ovx dmv laa
bld: zbs
rms: vjs znm
oku: brz yyy
bzn: dmc fwa ykh vrn axj
uzl: ayv fuz qhs kwq
bhz: ggv
kfj: xqa ucr akl
koi: szi
mvo: dqp kjr rbc
rof: vgo hlm
ixt: jws nxc vug
ycf: out
dmc: tsr
nam: mvo
rkj: quh yyy eya brz
qxk: uty
lwb: phc esx
fqf: isr dax
eou: lqz ysd
lbb: out
hyf: fgh wem yen taw
dfv: nzl
pnh: lai
jon: eya
guf: shn
lmw: hlu mhq
jff: ngn gye
xxj: guf dtj lnc
fbd: fcq lyd
idw: cmg phc
zbs: hjl
lqz: blh ttg ykz jhu zzy uek rcl bld xgg gbk mkp amm iju tvg
shn: goi
hdc: wap pvr
odf: yey ggp jtc
rkk: zyi ubs
fyr: fmv vtv
pxe: ztx mmi
ntf: dds cst aff
lyz: gwp
pyt: zpv ias oiz
cqx: rod jnp
dtj: shn vtv
gfu: kai ctq
ycw: ryl ixt uut dac
yvb: jbv rms fez
lvx: tvz vyo
pvr: yat
oiz: zjk ovx dmv
biy: tdg
xbz: cqf
obk: jje
jcc: ssq daa
elu: ihl kep lju unr
jgf: qfx bhz
wbp: xxj cap hjl
nne: out
llx: axj ykh
kso: kuk ams
eod: nzl aap
ryl: nxc
epd: eou jws ats nxc vug
wqg: uzn yyf
qhh: lqz
fhu: hex idw pal
ipt: ema
vpo: cap xxj
thl: azd otc
ttg: vpo
uty: owb qic
brz: mdl eiw gam aog nam wqg jcc kgs nac bsk zpk kul snr uzl
faw: out
lzw: wlw xss owb qic
wap: iel yat qhh paa
ffr: vnn fiv
nug: sqg eyp sws eai dsh icy zrp mas dmf ccg hoq qze qde cqt zvl jrq gep
ygk: jon oit
eya: ppx nac mdl dej
lnc: byj fmv shn
nhq: kjv
biq: lav xhe vcg
hfn: pvr ydj
leg: oii zad jje
fft: rof taz
maf: qic
aap: rkj hrs svl
axv: esa
zou: ulu eur xel
jtc: yyy
pxc: gvr dyo omt
byj: nqz goi faw
ykh: jix tbs tsr
fai: cst nug aff
oty: nhq
cek: vvv ubs zyi
ufu: zen
xtk: kpg tap qzv
kil: dds aff
ojk: lqz
aly: qak lqz
xxf: aff cst dds
yua: oit ktb rwv
vlf: ujz
lbw: zyi uuj
zpk: nhp urn ctg
kuk: you ysd qak
tmy: esa
sqi: quh lvi
jrq: obk leg
yat: lqz
atl: zpv ias oiz ona obm
xhe: asz jbv
gdx: oii jje
ssq: fqf tap kpg qzv
quh: snr kul zpk bsk nac ufu yor dej ppx aog nam wqg eiw mdl
bvn: luk
zny: jon ktb rwv
jzw: aap plm
jqp: dac
mpk: euv llh
fpr: gwp zmc ulq fhu
ahn: qtl rtn
zyi: lqz ysd
ypn: mtd xxf
fgh: rkk
vgo: xss owb wlw
axj: jix tsr
kgv: kpg
gfa: ona obm zpv ias
eur: eij vil oxs xip hsd hdc gbo laz rnq lnj nuk xck twd jqp ycw btu abg koi cey hfn
bsk: oqd hmt kew
wrx: tas
jix: aff nug cst dds qvv
blc: yan
rwv: yyy quh eya brz
exx: blc dks
ujz: mwp
yyf: xya xmb fee
icq: mtm
hxw: viq eod
xii: fyb
lyb: drx mlf pkl
puw: ona ias
ilj: qfx xph
wlw: gfu ghl vlf cgh mpk yfx pbj qrx hxw jsq eez syt dta ejn bps hnj pim
icy: xbz
wdr: gbm kil
svl: lvi
dax: wdj eur
fwa: jix tsr
fyb: you ysd qak
whr: ehr kaj ogx nvh
agb: mag yan
duw: luk yzp nil
plg: yen taw fks wem fgh
zrp: pyt puw qyk gfa atl
phc: you qak lqz
aff: qze hoq qde mdx zvl jrq sqg dsh eai zrp icy mas dmf
ulu: lnj xck twd jqp btu ycw abg koi gqf hfn eij vil oxs xip nhi hsd hdc kku laz rnq
ezt: nug cst qvv dds
ccu: yyy brz eya
nuk: zpf
ubs: ysd
qyk: ona oiz
kua: wlw xss qic
ssa: kua
uds: ier vnn fiv
cbw: gvr
pln: wdj ulu
zos: htz ilj
viq: aap nzl
azd: jff
esa: rtn oku
rzd: eya brz
syt: euv cbo
drx: tdg
qjq: xss owb
jru: aat eoy dqu
vms: bzf gkm ffr uds
zen: vms zuv vci
qfx: wdr
amm: wbp vpo evr jmb zbs
hnj: sxp viq jzw
vtv: goi
kep: xnp yoh evy
evr: cap
gvp: yyy brz lvi eya
kxs: rod jru uvb
daa: jlo
fks: lbw cek
omt: dds
gtx: out
jws: lqz qak
eoy: out
qvv: fes dmf icy zrp eai dsh iyb sqg eyp sws gep jrq mdx zvl qfd qde qze hoq ccg
smq: kaj
kmy: agb
qde: atl
fez: znm mvj vjs
cey: wrx ryw lbx
ema: brz eya lvi quh yyy
zfg: cst nug aff qvv
pim: yip pxl ujz
zge: lzw
ykz: yrg bss smx
yyy: snr zpk uzl ufu bsk dej yte kgs gam eiw wqg
yor: kew
cmg: lqz qak ysd
xya: zou pln uaz
zpv: laa
yen: cek rkk fce iwk
boc: eay hlu
ygu: xya ofj
xnp: oic zfg eft xwb
nlb: izm
fmv: nqz
mag: aem wtx qrc pyc ipu
tdo: jgf
znm: sxm lbb
mtm: xnp
khk: ipt qvi
vyo: eur wdj
kye: out
uvb: dqu aat yvz
xck: lyz fpr aek arq
acb: wtv gts
gep: qxk upq
ihl: xnp yoh
eyp: qyk
lai: qsj
ipu: out
isr: ulu
qrc: out
jhu: bqf
eij: uut dac ryl epd
tvg: yrg thl mvu bss
pbj: ucr
cst: ccg sws hoq qze dsh qde cqt
yzp: xwa diq cft ypn
uut: eou ats
fee: zou
dqj: mmi taz rof ztx
rnq: arq aek
yfk: yvb zzh
lvi: jcc dej mdl gam aog nam zpk kul uzl ufu bsk nac
tap: sxw
jsq: dfv sxp viq jzw
tdg: aff nug cst dds
cgh: tmy oze nlb and
qzv: dax
jtn: xhe
kjr: ski wpw sdx xyl
ski: wdj xel
oqd: zuv
ppx: zen hmt kew
vcg: jbv
jbw: nvh
ctg: dqp
dcv: owb wlw qic
kzs: rxd lai cuu lvx
dws: bss yrg thl mvu
ara: dds qvv cst nug aff
ctr: owb wlw
ctq: ehr kaj acb
zpf: fgh fks
pyc: out
ras: gvr omt
iby: xxb rqa vlx
gam: mah ygu uzn
ulq: idw lwb pal
gkm: ier
cqn: pdv elu
tvz: ulu
obm: laa
btu: alz
wtx: out
xel: oty oxs vil eij hsd nhi hdc gbo kku lnj ycw btu jqp xck gqf hfn cey koi abg
uxa: lwb hex rns
yga: gnq
ppv: lav xhe vcg
upq: hzh cqf lzw uty
mvu: otc exw
yrg: otc azd
kul: qsu xtk ssq daa kgv
pif: mbd bzn mzo xhj wee jdf
xhy: wus khk mwp
ehr: wtv gts yga
fes: zge
rwu: you qak ysd lqz
hnw: cst
goi: out
hsd: alz zpf amk
hzh: wlw xss qic
lbs: vlx rqa
dds: mdx zvl qde qfd qze jrq zrp icy iyb dsh eyp sqg fes dmf mas
tsh: hpv kua
svr: xoz lak pif ryf dyv
gua: hlu
jei: jtc ggp
wpw: xel eur wdj ulu
jbf: biq jtn hut ppv yfk
hoq: qmk fwk cxr fbd
blh: evr vpo zbs jmb
mas: gdx
afk: jko pxe
zzy: lmw boc
vsy: tmy oze axv and
htz: xph qfx bhz
yte: mah ygu uzn rcr
zuv: bzf gkm ffr uds
yvz: out
ejn: dok llh euv
jlo: dax isr
qvi: gvp ema rzd
mdl: mah
wdj: hfn gqf cey koi jqp twd lnj rnq gbo kku hdc hsd oty vil eij abg ycw btu xck nuk nhi oxs
ias: dmv zjk ovx
laz: nhq
ish: blc
pkl: ezt ara
xhj: elu
tlp: ais
mux: zrm uvb
vci: bzf gkm uds
nie: wtx aem qrc
ike: wdj xel ulu
abg: pvr wap
ono: lqz
yip: khk
oze: ahn izm
lak: bvn mbd llx xhj lyb pxo
dmf: obk leg
wus: ipt qvi
oic: nug cst qvv dds
rpr: ifc fjg mfu
vvv: qak
qtl: lvi brz quh yyy
rqt: pdv icq
yoh: eft ntf oic
aby: nug dds
yfx: axv tmy
xmb: uaz pln
hrs: brz quh yyy
eez: llh cbo
lyd: qic owb xss wlw
dyo: dds qvv aff cst nug
evy: xwb eft ntf
plv: esz ktb jon
luk: xwa ypn
nqz: out
ier: wdj eur ulu
yey: quh eya lvi brz
otc: svv tlp jff
qze: leg gdx obk
aek: gwp ulq
mah: xmb fee xya
pxl: khk xux wus
wem: iwk cek lbw rkk
nhi: uut ryl epd
cui: out
qak: ykz xmj jbf rpr xgg blh
qwm: eya lvi brz quh
dsh: zge qxk upq xbz
hmt: zuv
bss: azd otc
rxd: vyo qsj
eay: uhs mux kxs
vnn: ulu wdj eur xel
iju: ckk lmw gua
fiv: wdj eur xel ulu
izm: rtn oku
xld: fjg mfu ifc
xph: ggv nqb
ija: rxd cuu
tsr: nug cst aff dds qvv
uaz: ulu wdj eur
ats: lqz you qak ysd
cft: xxf aby
taw: iwk cek lbw rkk
rns: ojk phc
qic: vlf eez cgh yfx dta syt bps hnj jsq
gqf: zpf amk plg hyf
ryb: qak
tbs: nug aff qvv dds
gbk: yfk
eiw: mvo ctg urn abp
kpg: sxw isr
pal: phc ojk esx
ais: nne hyg kye ycf
fjg: kmy
uzn: fee xmb
hpv: owb xss wlw qic
hlu: mux cqx
azc: ckk lmw boc
dqp: xyl ike
aat: out
fuz: srk pnh ija
ypw: jgf
pdv: kep
dmv: qjq vky
fya: llv iby lbs
plm: rkj
xux: ipt qvi mmh
gye: kye gme
zzh: fez asz rms
snr: ayv fuz qhs
ydj: qhh akg paa
rcr: ofj fee xmb xya
kaj: wtv kmf yga
lju: yoh evy
ebo: sqi jtc yey
vlx: rwu ryb ono
tas: xxb xii
wee: pdv xgw
fkj: owb wlw
xro: ilj htz jgf
hum: lqz ysd
kku: bsy aek lyz
euv: clh plv yua ygk
akl: ebo jei tkt odf
lnj: fya lbx
lbx: iby lbs
mhq: cqx uhs
hut: vcg zzh
szi: mnj ams
ysa: sxm rni lbb
vug: you
llh: ygk yua zny plv clh
nzl: hrs
uek: mvu
mmi: maf vgo hlm
eft: dds cst
dok: zny yua clh plv
kmf: npf lef nsp
mnj: you qak ysd lqz
paa: qak you
ghl: xhy
ggv: kil gbm fai lvh
jje: ssa
jko: mmi
srk: rxd
yan: ipu
nxc: lqz you qak
gts: qwm npf lef gnq
qrx: kai smq whr
ovx: oiw
unr: evy xnp
kew: vms vci
sxp: aap
oii: tsh wsd
cbo: ygk clh
xip: wrx lbx
sws: ond tbu
abp: rbc
tkt: ccu ggp
diq: xxf mtd hnw
gvr: nug cst
ipw: jtc ccu
arq: uxa gwp ulq
iwk: vvv uuj aly zyi
mfu: exx kmy
dks: nie mag
twd: fpr lyz arq bsy
fwk: lyd
jnp: eoy aat
nsp: brz eya yyy
xss: vsy bps ixr hxw syt pbj kfj gfu
nac: kgv xtk qsu
oiw: qic xss owb wlw
svv: ais gye
mtd: cst dds qvv
ixr: and nlb axv
jdf: pxc cbw
dyv: dea wnr xro ypw xlu
qfd: afk ond
wtv: qwm nsp
xxb: rwu ryb fyb ono
wnr: xgw elu
uhs: uvb zrm jnp rod jru
asz: mvj vjs
eai: gfa puw
ofj: uaz
vnz: pkl
kgs: mvo urn abp ctg
fce: ubs uuj vvv
pxo: vrn fwa dmc ykh
cxr: lyd fcq dcv
xgg: ifc
mzo: biy pkl mlf
gwp: pal idw rns hex
you: dws amm iju tvg bld xgg jbf btz mkp jhu uek blh xld ykz ttg azc
jep: wlw xss
nqb: lvh
zrm: yvz eoy aat cui
zmm: odf ipw jei
kjv: qak ysd
akg: you ysd lqz
lvh: qvv dds aff cst
ogx: gts yga
urn: kjr rbc
bsy: uxa fhu zmc gwp ulq
lav: asz fez
exw: svv
esz: lvi
sxw: eur xel
ams: lqz
qsu: fqf kpg tap
bps: akl zmm xqa
ayv: srk pnh ija kzs
gme: out
oxs: szi nhq kso
hex: esx hum ojk cmg phc
xlu: luk
aem: out
mlf: ara
kwq: srk pnh kzs
jmb: xxj cap
dqu: out
iel: ysd
ucr: ipw
cqt: fbd qmk fwk
nhp: dqp kjr
ifc: ish
llv: rqa xii xxb
dea: luk yzp nil
ngn: nne gme ycf hyg
ryf: xlu rqt swe bvn lyb duw cqn bzn jdf wnr wee ypw pxo vnz xhj zos
lef: brz quh
mbd: pxc
cap: dtj guf
rcl: wbp evr vpo jmb
zvl: fbd cxr fwk
btz: lmw gua
ktb: brz yyy
taz: ctr hlm vgo fkj
mkp: jtn hut yfk ppv
iyb: afk tbu
gbm: nug dds
swe: ras
ckk: hlu eay
rni: out
bzf: fiv
qhs: ija
rod: yvz
amk: yen taw
vjs: rni sxm
hlm: owb xss
zjk: oiw
mvj: gtx rni
ryw: iby llv
npf: quh brz lvi
zad: ssa tsh
esx: lqz ysd
mwp: mmh
alz: wem yen
kra: luk nil
xmj: smx
dej: kew