Compare commits

...

1 Commits

Author SHA1 Message Date
Lol3rrr
9f43000c94 Implement 2025 - Day 11 - Part 1 2026-01-14 20:52:19 +01:00
3 changed files with 643 additions and 0 deletions

57
2025/11.rs Normal file
View File

@@ -0,0 +1,57 @@
---cargo
[profile.dev]
opt-level = 3
[dependencies]
nalgebra = "0.34"
---
use nalgebra::DMatrix;
use std::collections::HashMap;
static CONTENT: &'static str = include_str!("./inputs/11_1.txt");
fn main() {
let parts: HashMap<[char; 3], (usize, Vec<[char; 3]>)> = CONTENT.lines().map(|l| l.trim()).map(|p| {
let (key, rest) = p.split_once(':').unwrap();
let key = key.trim();
let rest = rest.trim();
let key: [char; 3] = core::array::from_fn(|idx| key.chars().nth(idx).unwrap());
let rest: Vec<[char; 3]> = rest.split(' ').map(|p| {
core::array::from_fn(|idx| p.chars().nth(idx).unwrap())
}).collect();
(key, rest)
}).chain([(['o', 'u', 't'], Vec::new())]).enumerate().map(|(idx, (key, v))| (key, (idx, v))).collect();
println!("{:?}", parts);
let mut adj_matrix = DMatrix::from_element(parts.len(), parts.len(), 0u64);
for (src, (src_idx, targets)) in parts.iter() {
for dest_idx in targets.iter().map(|t| parts.get(t).map(|(i, _)| i).unwrap()) {
adj_matrix[(*src_idx, *dest_idx)] = 1;
}
}
println!("{}", adj_matrix);
let you_idx: usize = parts.get(&['y', 'o', 'u']).map(|(idx, _)| *idx).unwrap();
let out_idx: usize = parts.get(&['o', 'u', 't']).map(|(idx, _)| *idx).unwrap();
let mut total_routes = 0;
let mut connectivity_matrix = DMatrix::identity(parts.len(), parts.len());
for length in 1..=parts.len() {
println!("Length: {:?}", length);
connectivity_matrix *= &adj_matrix;
let routes: u64 = connectivity_matrix[(you_idx, out_idx)];
println!("Routes: {}", routes);
total_routes += routes;
}
println!("Total Routes: {}", total_routes);
}

576
2025/inputs/11_1.txt Normal file
View File

@@ -0,0 +1,576 @@
nzm: rdg art kvn ljd nrj
pvs: kmc fxz njx amt
ext: xfz inf kzr
hwq: jpw yjw vkt
ygr: wtu vbc hkc
gly: ujv mtz zcc
bjl: blz pmb
cst: uej kcg
zqw: dta udx fhr slm qsa xsm yif ych wcj hbl xth crj fjy ebp piy snu eyt cpz gqb nwk jjt kfd
tyl: rzk wcc zti jex eqn xbm uqa ceu mgw urj gvj iel zuh
llk: aij
rby: rsc
waa: rae bsg
rcu: art kvn nrj
sev: drf tod
tqj: ydc fzm
eep: xlo poa iqd
xas: lws xdb qbt
cfg: uzb
bcg: jaf zpm oql
zqg: xsg hsq
tqb: vic zle tyl hnh
wgu: doq ekw jyi
ned: kzx lvb tza idx
vtt: gls rvi ppv otq
lky: wfk rpg aij
wcc: pxu zel bth
lqv: njx amt kmc fxz opq
led: hkc yzo wtu vbc
vks: cfy zud
hck: kzx lvb tza
loe: lym
zko: qya
tod: nre fxv
fxv: fkd ekg mmm xba
qjj: hud fkd ekg mmm xba
sjw: you vkz
pnj: hwq mot ydw
ydv: kzt ssj vwa
leu: qbt
ljn: rcf fmw
kuy: tyl hnh ibk vic
ezr: vrk vwa
pfr: vap
zpo: sit sfh twt odd
mlr: kmc fxz
ydw: jpw yjw pha vkt
ttd: bjl hkc
rgn: zud dzj
snu: hvd liz
vbc: pmb mmx
ihv: ibk vic
vgi: idx
rwa: fkd
sud: yzb hky
fhb: jru mrb pps
fsi: byp svo ezv vsa
fkd: roj kvk dio zwl vle nsa oxj wyb
cfy: ffo pvs ytq
nbu: out
lru: ipg imm hrs
ovm: zle hnh
rsk: mlx
ooq: csk
egg: uzb jaf oql qqh
lry: rae
zqx: twb xyk rut
brt: kio cgz
msc: mmm ekg hud fkd
kzx: gcv akw hng
twb: fdf rja sjw
vhs: sxj
fdf: vkz iqd
wew: vgz gls otq
chj: kpx xiw
qeu: dtq xsl rfn
rfn: qey tqb eza fjn
wzr: you poa xlo
ghx: xsf jvu aid qeu
zrm: uej hzq
zuh: kxh vup sir
nqd: mrb tbx pps gka
zih: njx fxz amt opq
ngw: fzc zyv gbx
pcz: kvb
zxv: hng gcv
lsp: cqq pfr ibh
pha: poa vkz iqd you
oea: qbt lws
kme: air
nax: vad kpx xiw
qsa: bcg egg cfg
cat: ewt wew
njx: bat fdj nsw chj wyq fam iqk qgq omu kiv ovi dup
qya: bdb qjj mof
twt: owm
ail: amt njx opq
gtk: out
oul: xdv
ryw: qmg ntj
wqz: wrc ngy
lit: wzr fdf rja sjw
ibk: urj pjr cfs ceu mgw eqn cas uqa xbm rzk ktv zti
rjc: zup rsk
ych: lky cvz ilm
hud: roj xuu ibr iua ybi
tvp: jfy hyh eip qmg ntj
inv: qjj bdb
ykn: tak zto qei
epu: vtc edy rgn
hzb: vee
jpw: poa iqd
urj: ucy gbg pdi ygy bjo
ybi: awi
vkz: fmf waa dcd eje gly ihh
pps: ehx
qbt: kmc amt
iua: isx trq res shq
iel: bth eth
imj: mmm fkd ekg
ipg: iew ypy
fzm: vua
piy: ned
nre: mmm ekg hud
kvk: dac hky
nrj: out
thp: hnh tyl ibk zle vic
iqd: wjs fpr hzb fmf lry dot waa eje lzu mgf
ljd: out
zle: jex cas eqn uqa yla rzk ktv wcc zti pjr urj gvj iel zuh rle ceu mgw oha
zel: wmu ijr
lzu: rae
pgl: xlo you vkz poa
bjt: eip
foo: pqh vfu drf
ngy: jac wvw
tnb: tor ooq pyq gai
iew: leu whw xas oea
zwg: wrc ngy etz
rzk: kxh cnw mjp sir
fxz: qgq brt huy gav wyq iqk fam omu kiv ovi kmq nax dup bat muk fdj nsw
wmu: bkk
cpz: ygr
ucs: vkz you
jla: uuf thp
jaf: akw hng gcv
xoj: vic tyl zle
cqq: dlp vap
ffo: opq kmc amt fxz
urv: vap dlp qwf
zfn: dac
oyv: vic zle tyl
rbm: pvh gwk jrh
xlx: rvi
icb: eep yby
vub: njx opq
qwf: gcv akw hng
esc: fmw
tix: fxz amt
wyb: hky
oql: hng akw
yla: nkv hgb equ
zpm: hng gcv
xba: utf kvh ajc sud zov zwl ybi oxj loe wyb dio nsa uvr vle
dfp: etz wrc baq
vap: hng
rja: vkz iqd poa you xlo
bsg: fog dpl bip
sfu: gbx tua zyv
dzz: vua tnb gzy
hvd: nmx
muk: bjt tvp ryw dyt
ckt: vkz iqd poa
uuf: ibk zle hnh tyl vic
air: oyv
slm: ktn hvd liz
tqf: onm ius msc
rae: bip
roj: zqx ojs oyj qph
eqn: tqf pty guo
kzr: ail tix
ydc: gzy tnb
iqk: qic ote rbm
xsl: tqb fjn uwy eza
qph: xyk lit
shq: zza mnm zbd ucs
kcg: out
pqh: rrp
xuu: res
qfl: hsq ifm xsg tab
gai: oqt azy
vua: hjl pyq
rut: rja
jex: bjo
bws: qjj
fog: fgo ykr fhb gda
hqe: iew dlk ypy
utf: lym
qqh: hng akw
gbg: sev spq foo
ktv: sir kxh vup cnw mjp
nfn: gcv hng akw
qei: ngw
hrs: iew
whw: qbt xdb
rdg: out
pmb: gcv akw hng
gcv: ssm nli rhl tuj zfe kvs tgh zqg big lru twn glg ykn qfl jts dyy
otq: xba mmm
spq: pqh tod
gzy: gai ooq hjl
jvu: dtq rfn
sfd: uri lkc
isx: ucs mnm zza zbd
vbg: nbu viv
xem: cmi edy
ifd: dzz rsc fzm
kmq: rdt
tgf: jyi
alt: poa vkz you
gbx: qzi mlr qrq fyo
pkw: uqr lsp
uri: ibh pfr urv
ucy: sev spq
dhh: zle hnh tyl vic
pty: msc ius kdz onm
fam: joh
kzt: nzm
ifm: sxj ext
ijr: rwa hal bkk
tak: fft
onm: fkd ekg
eje: rby tqj app
nsa: res shq trq
xyk: wzr fdf sjw
qrq: amt
ykr: pps gka mrb jru
uwy: vic zle tyl hnh
ygy: yhs spq
xsf: rfn dtq xsl
lvv: uuf thp
ceu: zel
vee: ydv xgp
lws: opq fxz njx kmc
tbg: bws inv
fee: kmc fxz njx
mtz: ezr zfy
huy: tvp dyt
ibr: fsi urt awi
rfr: sjw
ojs: rut rfr
twn: imm hqe hrs
yjw: xlo vkz poa
vft: kzt ssj eha
baq: wvw jac yoy
fyo: amt kmc fxz
urt: svo byp vsa
sbp: hng
kiv: wec kme
sir: rqx cat zgj pws
bat: ghx
pws: syu vtt xlx
gwk: zne jla lvv gpg
lvb: hng gcv
svr: zqw ino ugt
doq: fqp ljn nrr
jyi: esc nrr
gzj: xfz
hgb: zko
tua: pjd mlr qrq fyo
ppv: hud fkd xba
bwi: epu xem
ytq: amt kmc opq
aij: akw
bfr: xem nnd
kvs: tab
rle: pty
ehx: out
dio: awi urt fsi
crj: hck vgi ned
qth: ekg fkd xba mmm
xsg: ext
zgj: vtt wew syu
hkc: mmx blz
wqi: gcv akw
ujv: vft
owm: njx fxz amt
ewt: otq rvi gls
ekw: esc ljn nrr
zti: guo
xsr: uej
cas: eth
ymz: biy
kvn: out
fmw: nbu xdv
idx: gcv hng
xbm: zda hgb nkv
mot: pha jpw
gka: biw gtk
hky: pgl olf
pyq: oqt
bth: ijr
dgr: vtc rgn
pdi: yhs spq
uvr: hky dac
rdf: out
mgf: tqj rby
cnw: rqx zgj cat
zbd: iqd xlo
chp: tyl zle
cdw: ngw sfu fft
vrk: jyh rcu
mlx: vub
tuj: dgr xem nnd epu
jrh: gpg lvv
gvj: brb zel
azy: out
qzi: fxz amt njx opq
jjt: led ttd
xjo: mot ydw
yby: xlo you iqd vkz
amt: brt huy gav
fhr: vgi ned
bjo: yhs ria
cvz: rpg pdn wqi
dta: uba led rpo
uqr: ibh pfr urv cqq
rpr: ibk
rqx: vtt syu ewt
imm: iew
bkk: hud ekg
hbl: ktn liz
jru: rdf
xdb: opq
jac: zrm txj cst xsr
hyh: ovm dhh
awi: svo aoq ezv
eyt: pkw sfd zhj
eha: nzm
oyj: rut xyk lit twb rfr
syu: otq ppv rvi
ktn: dfy xll sbp nfn nmx
cjv: xoj kuy oyv rpr
zov: zqx ojs oyj qph
nrr: oul vbg fmw
rpg: hng
svo: afw
dfy: akw
tza: akw hng
wjs: dfp wqz zwg
qgq: bjt
wnc: hwq mot ydw
nkv: tbg agm zko
nhc: jvu xsf aid
oha: zda kzk equ
ria: drf tod
eza: vic
xfz: lqv
dfb: wgu fml
agm: bws qya flm
cgz: air phg
bdb: fkd
nnd: edy rgn vks cmi
gda: tbx jru gka pps
omu: kpx
blz: akw gcv
dur: zpo rsk
chb: dfp
dup: nhc joh
ibh: zxv
vwa: jyh nzm rcu
wec: phg air cjv
fzc: fyo qzi pjd mlr
uqa: ucy pdi ygy bjo
tab: ext gzj ypl
ajc: ojs oyj qph
hdi: tyl zle ibk
mgw: ygy bjo gbg
lsx: you poa vkz
zhj: lsp uri lkc
dyy: hqe imm
vup: pws
ius: mmm xba
rrp: hud fkd xba
hal: fkd ekg mmm xba
vad: lwp
poa: dcd dot fmf waa chb lzu gly kpb ihh fpr wra gmr ejc
dyt: hyh
zcc: xgp ydv zfy
ujp: tyl vic
oxj: tsp lym
pjr: vup
txj: uej kcg hzq
rlv: fog dpl bip
pxf: tsp
sxj: kzr
tor: oqt
qmg: hdi ovm ihv
cfs: cnw vup mjp sir
yoy: zrm cst txj
pvh: gpg lvv jla zne
qic: pvh gwk pcz jrh
wra: fml tgf
wia: pvh pcz
wvw: xsr cst
phg: kuy rpr
udx: bcg
nwk: rpo led ttd uba
afw: lsx yby
eth: nkl ijr wmu
xlo: ktj dfb waa fmf wjs dcd gmr
zup: sit odd mlx twt
uba: wtu bjl vbc yzo
gqb: led uba ttd
odd: fee
res: ckt
ypl: inf
ypy: sjh whw
tsp: pnj wnc xjo
dlp: gcv
dlk: leu xas whw
nsw: rdt ote wia rbm
vsa: afw pdf icb
dtq: uwy eza qey tqb
pdn: akw gcv
ihh: wgu tgf
drf: imj
eiw: ydc dzz
hnh: mgw cfs ceu oha urj pjr wcc rzk yla cas eqn xbm
ugt: dta crj ebp fhr udx eyt yif ych cpz wcj gqb hbl xth nwk jjt kfd
vic: zuh zti rle jex yla ceu ktv iel
fjy: ilm
trq: zza mnm
ssm: epu
kfd: egg zcd cfg
fml: doq jyi
edy: cfy
zza: poa iqd vkz you
jyh: rdg ljd kvn nrj
xsm: llk lky
hjl: oqt csk azy
mnm: you
brb: ijr nkl
aoq: afw pdf icb
jkz: vic tyl zle ibk
zto: sfu fft
mmx: hng akw gcv
fdj: cgz kio wec
rvi: hud
hng: qrc glg bwi dyy kvs cuh big ssm nli
kvh: ojs oyj
kmc: wyq huy kiv fam fdj
big: biy dur rjc
lym: xjo wnc
vkt: xlo you vkz iqd
oqt: out
you: kpb ihh mgf gly eje chb lry dfb ejc wjs fpr
zfy: kzt eha
eip: ovm ujp
yif: cfg egg zcd bcg
zwl: qph oyj
pdf: eep lsx
xuw: njx kmc fxz
nkl: rwa hal
pvf: wnc
equ: tbg zko
jts: dgr
nli: imm hqe
ovi: ghx joh
ati: out
sit: vub
ndr: shq res isx
kvb: uuf jkz
xgp: kzt ssj eha vwa
nmx: gcv akw
ino: ebp nwk fhr slm snu eyt ych wcj dta gqb
kpb: wqz dfp
app: fzm dzz
sfh: fee vub
xll: hng
vtc: dzj
liz: dfy xll sbp nfn nmx
kxh: rqx cat
gav: dyt ryw bjt
mrb: gtk ati biw
ilm: wqi
ote: gwk pvh
dac: pgl alt
ejc: mtz ujv zcc
biw: out
glg: biy dur rjc
bip: fhb gda ykr
flm: mof qjj qth bdb
wrc: jac
kzk: tbg
qey: ibk
xiw: lwp nuc kgu chp
guo: ius
yzo: pmb
fft: tua zyv fzc
kgu: zle
gpg: jkz thp
xdv: out
zfe: rjc biy
jnc: ifm hsq xsg
biy: zup rsk zpo
vle: lym pvf
dzj: xuw zih ytq pvs
rhl: cdw zto
akw: kvs tgh bfr zqg nli jnc ssm tuj rhl zfe cuh qfl dyy bwi ykn qrc big ymz lru twn
yzb: alt
hzq: out
rsc: gzy tnb vua
ebp: bcg cfg
dot: rlv bsg rae
nuc: vic
mmm: wyb loe nsa vle ybi iua ndr sud zov zfn pxf roj xuu kvh utf
tgh: vhs tab xsg
wfk: akw gcv
byp: afw pdf icb
inf: ail lqv
dcd: vee zcc
etz: yoy
aid: xsl
mof: ekg fkd mmm
kio: cjv phg
sjh: lws
mjp: rqx zgj cat
jfy: hdi ovm ihv
ssj: nzm
kdz: fkd mmm
art: out
gls: fkd hud xba
opq: nsw qgq iqk chj
kpx: chp nuc
uzb: hng gcv
vfu: rrp nre imj fxv
cmi: cfy zud
wyq: nhc ghx joh
csk: out
vgz: ekg mmm xba
wtu: mmx
hsq: ypl ext gzj
ekg: ybi oxj vle roj kvh ajc sud kvk zfn zwl pxf
fjn: tyl zle ibk vic
lkc: pfr urv cqq
fqp: rcf vbg
cuh: rjc
zcd: uzb jaf zpm qqh
fpr: rby ifd eiw app
zud: pvs ffo xuw
uej: out
ktj: tqj eiw rby
rpo: yzo hkc vbc wtu
lwp: tyl hnh ibk vic
fgo: pps jru
gmr: rae bsg rlv
zyv: pjd qrq
ezv: pdf
ntj: dhh ujp ovm hdi ihv
rcf: xdv nbu
joh: xsf aid
viv: out
pjd: opq fxz kmc njx
zda: agm tbg
zne: jkz uuf
yhs: vfu drf tod pqh
xth: zhj sfd pkw
qrc: cdw
wcj: zhj
dpl: fgo nqd gda
olf: you iqd xlo
fmf: wqz dfp
rdt: gwk
pxu: nkl
tbx: ati ehx biw rdf gtk

View File

@@ -0,0 +1,10 @@
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