Compare commits
3 Commits
f7949a3594
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
500de11910 | ||
|
|
aee88264c5 | ||
|
|
4e26c55eb7 |
134
08/main.go
134
08/main.go
@@ -9,29 +9,31 @@ import (
|
|||||||
"git.z1glr.de/advent-of-code-2025/pkg/aoc"
|
"git.z1glr.de/advent-of-code-2025/pkg/aoc"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Point struct {
|
type Node struct {
|
||||||
X, Y, Z int
|
X, Y, Z int
|
||||||
Parent *Point
|
root *Node
|
||||||
Size int
|
Size int
|
||||||
id int
|
ID int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Point) DistanceTo(p2 *Point) float64 {
|
func (p *Node) DistanceTo(p2 *Node) float64 {
|
||||||
return math.Sqrt(float64((p.X-p2.X)*(p.X-p2.X) + (p.Y-p2.Y)*(p.Y-p2.Y) + (p.Z-p2.Z)*(p.Z-p2.Z)))
|
return math.Sqrt(float64((p.X-p2.X)*(p.X-p2.X) + (p.Y-p2.Y)*(p.Y-p2.Y) + (p.Z-p2.Z)*(p.Z-p2.Z)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Point) GetRoot() *Point {
|
func (p *Node) GetRoot() *Node {
|
||||||
if p.Parent == nil || p.Parent == p {
|
if p.root == nil {
|
||||||
return p
|
return p
|
||||||
} else {
|
} else {
|
||||||
return p.Parent.GetRoot()
|
root := p.root.GetRoot()
|
||||||
|
p.root = root
|
||||||
|
return root
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func PointFromString(s string) Point {
|
func PointFromString(s string) Node {
|
||||||
parts := strings.Split(s, ",")
|
parts := strings.Split(s, ",")
|
||||||
|
|
||||||
return Point{
|
return Node{
|
||||||
X: aoc.ParseInt(parts[0]),
|
X: aoc.ParseInt(parts[0]),
|
||||||
Y: aoc.ParseInt(parts[1]),
|
Y: aoc.ParseInt(parts[1]),
|
||||||
Z: aoc.ParseInt(parts[2]),
|
Z: aoc.ParseInt(parts[2]),
|
||||||
@@ -41,30 +43,32 @@ func PointFromString(s string) Point {
|
|||||||
|
|
||||||
type Connection struct {
|
type Connection struct {
|
||||||
Length float64
|
Length float64
|
||||||
P1, P2 *Point
|
P1, P2 *Node
|
||||||
}
|
}
|
||||||
|
|
||||||
func do(test bool) (int, int) {
|
func do(test bool) (int, int) {
|
||||||
rows := aoc.ReadFileRows(test)
|
rows := aoc.ReadFileRows(test)
|
||||||
|
|
||||||
points := make([]Point, len(rows))
|
points := make([]Node, len(rows))
|
||||||
|
|
||||||
for ii, rr := range rows {
|
for ii, rr := range rows {
|
||||||
points[ii] = PointFromString(rr)
|
points[ii] = PointFromString(rr)
|
||||||
points[ii].id = ii
|
points[ii].ID = ii + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
connections := []Connection{}
|
connections := []Connection{}
|
||||||
|
|
||||||
for ii := range points {
|
for ii := range points[:len(points)-1] {
|
||||||
for jj := range points[ii+1:] {
|
for jj := ii + 1; jj < len(points); jj++ {
|
||||||
|
// for jj := range points[ii+1:] {
|
||||||
p1 := &points[ii]
|
p1 := &points[ii]
|
||||||
p2 := &points[jj]
|
p2 := &points[jj]
|
||||||
|
// p2 := &points[ii+1+jj]
|
||||||
|
|
||||||
connections = append(connections, Connection{
|
connections = append(connections, Connection{
|
||||||
Length: p1.DistanceTo(p2),
|
Length: p1.DistanceTo(p2),
|
||||||
P1: &points[ii],
|
P1: p1,
|
||||||
P2: &points[ii+1+jj],
|
P2: p2,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -72,58 +76,72 @@ func do(test bool) (int, int) {
|
|||||||
// sort distances by length
|
// sort distances by length
|
||||||
sort.Slice(connections, func(i, j int) bool { return connections[i].Length < connections[j].Length })
|
sort.Slice(connections, func(i, j int) bool { return connections[i].Length < connections[j].Length })
|
||||||
|
|
||||||
for ii := range connections[:10] {
|
threshold := 1000
|
||||||
|
|
||||||
|
if test {
|
||||||
|
threshold = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
var res1, res2 int
|
||||||
|
|
||||||
|
for ii := range connections {
|
||||||
|
if ii == threshold {
|
||||||
|
roots := []*Node{}
|
||||||
|
|
||||||
|
for ii := range points {
|
||||||
|
pp := &points[ii]
|
||||||
|
if pp.GetRoot() == pp {
|
||||||
|
roots = append(roots, pp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sort.Slice(roots, func(i, j int) bool { return roots[i].Size > roots[j].Size })
|
||||||
|
|
||||||
|
res1 = roots[0].Size * roots[1].Size * roots[2].Size
|
||||||
|
|
||||||
|
fmt.Println(res1)
|
||||||
|
|
||||||
|
} else if ii > threshold {
|
||||||
|
cc := connections[ii-1]
|
||||||
|
// check wether it is one big circuit
|
||||||
|
root := points[0].GetRoot()
|
||||||
|
|
||||||
|
multipleCircuits := false
|
||||||
|
|
||||||
|
for jj := range points[1:] {
|
||||||
|
pp := &points[jj]
|
||||||
|
if pp.GetRoot() != root {
|
||||||
|
multipleCircuits = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !multipleCircuits {
|
||||||
|
res2 = cc.P1.X * cc.P2.X
|
||||||
|
|
||||||
|
fmt.Println(res2)
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cc := &connections[ii]
|
cc := &connections[ii]
|
||||||
// if both have no parent, make the first one as the parent
|
|
||||||
if cc.P1.Parent == nil && cc.P2.Parent == nil {
|
|
||||||
cc.P1.Parent = cc.P1
|
|
||||||
cc.P2.Parent = cc.P1
|
|
||||||
|
|
||||||
cc.P1.Size++
|
root1 := cc.P1.GetRoot()
|
||||||
|
root2 := cc.P2.GetRoot()
|
||||||
|
|
||||||
// if the second one has no parent, connect it to the first one
|
if root1 != root2 {
|
||||||
} else if cc.P2.Parent == nil {
|
root2.root = root1
|
||||||
cc.P2.Parent = cc.P1
|
|
||||||
|
|
||||||
cc.P1.GetRoot().Size++
|
root1.Size += root2.Size
|
||||||
} else if cc.P1.Parent == nil {
|
|
||||||
cc.P1.Parent = cc.P2
|
|
||||||
|
|
||||||
cc.P2.GetRoot().Size++
|
|
||||||
|
|
||||||
// both have a parent -> make the parent of p2's root p1
|
|
||||||
} else {
|
|
||||||
p2Root := cc.P2.GetRoot()
|
|
||||||
p2OldSize := p2Root.Size
|
|
||||||
|
|
||||||
cc.P2.GetRoot().Parent = cc.P1.GetRoot()
|
|
||||||
|
|
||||||
cc.P1.GetRoot().Size += p2OldSize
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
roots := []*Point{}
|
return res1, res2
|
||||||
|
|
||||||
for ii := range points {
|
|
||||||
pp := &points[ii]
|
|
||||||
if pp.GetRoot() == pp {
|
|
||||||
roots = append(roots, pp)
|
|
||||||
|
|
||||||
fmt.Println(pp.Size)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sort.Slice(roots, func(i, j int) bool { return roots[i].Size > roots[j].Size })
|
|
||||||
|
|
||||||
res1 := roots[0].Size * roots[1].Size * roots[2].Size
|
|
||||||
|
|
||||||
fmt.Println(res1)
|
|
||||||
|
|
||||||
return res1, 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if r1, r2 := do(true); r1 == 40 && r2 == 0 {
|
if r1, r2 := do(true); r1 == 40 && r2 == 25272 {
|
||||||
do(false)
|
do(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
32
09/main.go
32
09/main.go
@@ -12,8 +12,12 @@ type Point struct {
|
|||||||
X, Y int
|
X, Y int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p Point) Area(p2 Point) float64 {
|
type Rect struct {
|
||||||
return math.Abs(float64((p.X - p2.X + 1) * (p.Y - p2.Y + 1)))
|
P1, P2 *Point
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r Rect) Area() float64 {
|
||||||
|
return math.Abs(float64((r.P1.X - r.P2.X + 1) * (r.P1.Y - r.P2.Y + 1)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func do(test bool) (int, int) {
|
func do(test bool) (int, int) {
|
||||||
@@ -30,11 +34,27 @@ func do(test bool) (int, int) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
largestArea := 0.0
|
largestArea := 0
|
||||||
|
largestArea2 := 0
|
||||||
|
|
||||||
for ii, p1 := range points {
|
rects := make([]*Rect, len(points)*(len(points)+1)/2)
|
||||||
for _, p2 := range points[ii+1:] {
|
|
||||||
largestArea = math.Max(largestArea, p1.Area(p2))
|
for ii := range points {
|
||||||
|
for jj := range points[ii+1:] {
|
||||||
|
rects[ii+jj+1] = &Rect{
|
||||||
|
P1: &points[ii],
|
||||||
|
P2: &points[jj+ii+1],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for ii := range rects {
|
||||||
|
rr := &rects[ii]
|
||||||
|
|
||||||
|
// iterate all others
|
||||||
|
for jj := range rects {
|
||||||
|
if jj != ii {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
585
11/input
Normal file
585
11/input
Normal file
@@ -0,0 +1,585 @@
|
|||||||
|
jcy: qqq xzi wqn tga eoa dki jjn xyo ywb kor ous mni gkm
|
||||||
|
ewa: qww tln
|
||||||
|
wns: lin
|
||||||
|
ldh: rnx zzx tpx
|
||||||
|
opp: xed
|
||||||
|
ahr: rnw
|
||||||
|
ues: ooa jcy cub
|
||||||
|
zgm: pxj
|
||||||
|
nvs: ztn abt
|
||||||
|
vxm: nwe
|
||||||
|
lix: wii
|
||||||
|
zsd: jdr xcr
|
||||||
|
gms: lqa siz kbp
|
||||||
|
wvv: xed kxy
|
||||||
|
qop: mfc
|
||||||
|
xyw: htg srd vpq cnn icw dfv pav yjs svm axd lqs ntk kgx mbv uzf czy hpv ysj rok aso rpf qlq eai
|
||||||
|
ruj: pcd qkg
|
||||||
|
oyz: rqd dwz tes tdq eeo mqm jzd sti wdx vak ruj omj gjk atk lmv jkd otz pdl rnk nvs dpn xva ils cgd mtp dyd
|
||||||
|
bbu: yza lbs wnt
|
||||||
|
rye: jcy bid
|
||||||
|
gaq: inl pmh bey ofx pof asv ohv nkx kao mpg
|
||||||
|
vpq: wgo
|
||||||
|
fuj: gci dly
|
||||||
|
knm: bpb vyn
|
||||||
|
taw: saj oli yga fco
|
||||||
|
mbm: ooa cub
|
||||||
|
ozq: led gni
|
||||||
|
igf: fgg mhd arm
|
||||||
|
nwl: psk tnb
|
||||||
|
egc: ysw xrt
|
||||||
|
meq: nju xed
|
||||||
|
ved: dfi gor zsd
|
||||||
|
vub: may
|
||||||
|
cae: tlf jds qki mrg
|
||||||
|
gki: mjz pss
|
||||||
|
gym: vja
|
||||||
|
tan: oli yga cgq
|
||||||
|
zno: nju kxy
|
||||||
|
kpa: iep hmf ufu cmc
|
||||||
|
ctp: ktj tft
|
||||||
|
eds: lgb ony
|
||||||
|
hni: gor zsd
|
||||||
|
rej: zrr rwt sdm
|
||||||
|
wst: igv qqg meq nwe
|
||||||
|
gju: kts nfm
|
||||||
|
whc: omw xry pcz
|
||||||
|
kxy: ebu jjk haj eom fau ixr tlo ttm apc qda blh
|
||||||
|
fes: rlt ldh
|
||||||
|
hsx: out
|
||||||
|
bcp: yhv uyb oyz
|
||||||
|
nju: qnr poc cbn akc hmx haj ebu yez ixr bjr vaz tlo eom fau
|
||||||
|
dni: cin xyw mfc
|
||||||
|
zpi: swo ymg isk
|
||||||
|
gbg: msf svn bgp
|
||||||
|
iep: bid jcy cub
|
||||||
|
fct: cjp tgk
|
||||||
|
ovp: aqd nkd ocg
|
||||||
|
qoi: ktn fft
|
||||||
|
wei: lfd wvv
|
||||||
|
qda: gqr kyg qoi
|
||||||
|
jzd: oqh mxu
|
||||||
|
ukm: oim fwq ntx
|
||||||
|
dof: nwa jed tif
|
||||||
|
zpb: zne fdm
|
||||||
|
sei: nhd
|
||||||
|
nkd: gaz qcx uft
|
||||||
|
iag: xnv vke
|
||||||
|
xrt: plt
|
||||||
|
lfd: kxy
|
||||||
|
mga: htl uft qcx gaz
|
||||||
|
szf: ooa
|
||||||
|
vbw: ooa jcy cub
|
||||||
|
gho: svn msf bgp
|
||||||
|
wlw: ive wvv
|
||||||
|
psk: gbg vvk
|
||||||
|
peg: psk tnb nhd
|
||||||
|
ebu: gyo qqp
|
||||||
|
cbn: cvv klx
|
||||||
|
xob: xed nju
|
||||||
|
qlq: crj
|
||||||
|
rrs: ymt egc fft gjs
|
||||||
|
bie: xis trn
|
||||||
|
qrb: trn bbu skd
|
||||||
|
xry: zyz qic
|
||||||
|
fwq: zno dxf
|
||||||
|
qqp: tlf mjr jds mrg
|
||||||
|
vkm: kxy nju
|
||||||
|
qtl: out
|
||||||
|
oek: igf
|
||||||
|
tun: ykg tgk cjp
|
||||||
|
dac: sxv emj
|
||||||
|
htg: izo sho btt bli
|
||||||
|
vwx: tft ktj pdq
|
||||||
|
ymd: mjz dsv pss
|
||||||
|
lkk: kpe
|
||||||
|
tlo: fmk
|
||||||
|
mvv: urx
|
||||||
|
alh: ooa cub
|
||||||
|
kjo: hbl
|
||||||
|
ztd: zpi
|
||||||
|
blh: bie gwt qrb
|
||||||
|
asv: kbp siz mkn
|
||||||
|
rsk: kpa dob ctf
|
||||||
|
ctf: ufu iep
|
||||||
|
hpv: rfb
|
||||||
|
cot: zrr sdm
|
||||||
|
nfw: raa dac lix cpl
|
||||||
|
jds: cmv
|
||||||
|
qxa: cin mfc
|
||||||
|
auh: cub ooa
|
||||||
|
drh: nog wia qww
|
||||||
|
lto: way pgj dfi gor
|
||||||
|
cii: ojz urx
|
||||||
|
mkn: unc
|
||||||
|
cmc: ooa jcy cub
|
||||||
|
mcv: mkn siz lqa
|
||||||
|
sxv: tgk ykg cjp
|
||||||
|
iyx: ahy wlw
|
||||||
|
kmv: bna gkh
|
||||||
|
cmz: bjj mfc xyw
|
||||||
|
fsk: ffa hbl tan
|
||||||
|
xvx: inl gms bey pmh ofx mpg sha wzh fuo pof mcv xpe kao ahr
|
||||||
|
lkc: tgk ykg you cjp
|
||||||
|
sds: vae bgp
|
||||||
|
qug: bjj
|
||||||
|
wuo: llf
|
||||||
|
mjz: tif hmc txn nwa jed
|
||||||
|
fuo: vxm
|
||||||
|
cin: yjs rxt srd dfv aso eai axd
|
||||||
|
vak: huw gki nsb ymd
|
||||||
|
ffa: cgq oli fco yga saj
|
||||||
|
gni: qzv efw
|
||||||
|
qqa: igv vkm qqg
|
||||||
|
dfv: ojz
|
||||||
|
yct: oyz qlj
|
||||||
|
oli: tun
|
||||||
|
pcz: qic zyz ufi
|
||||||
|
xcf: raa dac cpl
|
||||||
|
oae: uyb yhv
|
||||||
|
otz: uso chy
|
||||||
|
zrr: out
|
||||||
|
wjp: bhs yck
|
||||||
|
wgo: ehw
|
||||||
|
ybb: yon ldu nwb
|
||||||
|
mtp: oqh rfk
|
||||||
|
poc: cvv sfd
|
||||||
|
fno: gkl fjv jcm
|
||||||
|
arm: ddi wjp
|
||||||
|
bey: ovo rnw rmn awz kmv
|
||||||
|
kpe: uft qcx htl gwu gaz
|
||||||
|
yow: kpa dob
|
||||||
|
gyo: tlf mjr qki mrg
|
||||||
|
cvv: bcp mtf jdq asj
|
||||||
|
hcc: qlj uyb oyz
|
||||||
|
wia: cjp
|
||||||
|
gor: jdr nim xcr
|
||||||
|
kgx: ekb viq
|
||||||
|
vja: ztd vca lnv
|
||||||
|
kao: vts plr bqf
|
||||||
|
wzh: wst ybq ehu
|
||||||
|
vny: bey inl gms mpg nkx ohv ofx fuo wzh ahr nee kao xpe asv mcv pof
|
||||||
|
vts: yrh
|
||||||
|
hjd: out
|
||||||
|
teg: eds
|
||||||
|
bwj: nni
|
||||||
|
yez: qrb gwt
|
||||||
|
oyg: fjv jcm upm
|
||||||
|
yvj: yct wul rhq vke
|
||||||
|
fgg: hzg ddi qae skk
|
||||||
|
poh: nfw zpz xcf
|
||||||
|
aso: gij wgo
|
||||||
|
vcs: eqo mau nar
|
||||||
|
ikl: nfm bvm
|
||||||
|
eqo: xyw cin bjj mfc
|
||||||
|
ixr: rpb
|
||||||
|
blx: vnv plt uqv
|
||||||
|
ydb: nju kxy xed
|
||||||
|
jtk: out
|
||||||
|
pcy: vcs nnb
|
||||||
|
siz: xob ggb
|
||||||
|
qic: hsx
|
||||||
|
wrs: may vse
|
||||||
|
eom: gyo
|
||||||
|
rnw: ukm
|
||||||
|
srh: jbx ipz
|
||||||
|
qzv: wia nog tln lkc
|
||||||
|
kor: nfw zpz
|
||||||
|
htl: axv rcz qop
|
||||||
|
msf: you ykg tgk cjp
|
||||||
|
vyn: uwx
|
||||||
|
irn: dct qug pgs
|
||||||
|
vke: yhv uyb
|
||||||
|
xnv: oyz yhv uyb
|
||||||
|
uwx: cjp
|
||||||
|
dtw: hzv nwl peg
|
||||||
|
qeh: cmz nyd
|
||||||
|
zae: wns omw pcz
|
||||||
|
ppo: kpa
|
||||||
|
uob: ahy wei
|
||||||
|
ony: mhd
|
||||||
|
mrg: yvj ltc iag cmv
|
||||||
|
ofx: wst ybq qqa ehu
|
||||||
|
zmb: kxy nju
|
||||||
|
lqs: fuj
|
||||||
|
eai: ren
|
||||||
|
fft: yzt blx jpn xrt ysw
|
||||||
|
cmv: xnv yct
|
||||||
|
pmh: wst ehu ybq
|
||||||
|
vca: bvz zpi
|
||||||
|
zhm: pcz xry
|
||||||
|
tln: tgk you ykg
|
||||||
|
pao: nwb ues yon
|
||||||
|
uht: taw ffa tan ofg
|
||||||
|
otu: zzx rnx
|
||||||
|
sdm: out
|
||||||
|
beg: out
|
||||||
|
ren: rye pgb mbm ecy
|
||||||
|
bjr: gwt qrb
|
||||||
|
cnn: urx ojz jtq
|
||||||
|
jcm: oae nxt
|
||||||
|
vnv: uyb qlj
|
||||||
|
vzx: out
|
||||||
|
tqj: zne fdm szf
|
||||||
|
lgg: jdq fbb asj
|
||||||
|
rpb: oyg jbx ivr ipz
|
||||||
|
lgb: gxr mhd arm zee fgg
|
||||||
|
ntx: ytw
|
||||||
|
nee: afk vts ksc bqf
|
||||||
|
ksc: qbg
|
||||||
|
urx: seb
|
||||||
|
ovo: ukm
|
||||||
|
pub: dct pgs qxa
|
||||||
|
crj: pgb rye alh
|
||||||
|
haj: klx cvv sfd
|
||||||
|
oim: weh dxf zno ytw opp
|
||||||
|
npo: mhd arm fgg gxr
|
||||||
|
raa: sxv emj
|
||||||
|
rfk: fje
|
||||||
|
ktn: blx jpn xrt
|
||||||
|
lrv: ved lto hni
|
||||||
|
hwx: kpe mga
|
||||||
|
fei: cjp you ykg
|
||||||
|
lap: ldh otu
|
||||||
|
lnv: rtf bvz zpi
|
||||||
|
saj: uzy fct
|
||||||
|
skk: qtl yck jtk
|
||||||
|
cnr: vse may tqj zpb
|
||||||
|
jjk: lgg cvv sfd
|
||||||
|
rok: rfb gij
|
||||||
|
gpn: jcy
|
||||||
|
led: qzv drh
|
||||||
|
ksw: xvw gcs
|
||||||
|
cqj: uyb oyz
|
||||||
|
sti: gki huw nsb
|
||||||
|
swo: yxl xlx
|
||||||
|
rtf: swo
|
||||||
|
uyb: mqm pii eeo nvs rnk gjk tes dwz wdx tdq lmv
|
||||||
|
dki: hzv nwl sei nsg peg
|
||||||
|
rnx: out
|
||||||
|
bli: qix ixj
|
||||||
|
tlf: iag iwy ltc
|
||||||
|
huf: nps
|
||||||
|
qmy: bid cub jcy
|
||||||
|
huw: dof
|
||||||
|
nnb: mau bbf avw eqo nar
|
||||||
|
qqg: kxy xed
|
||||||
|
dyd: qeh chy
|
||||||
|
xmv: ztd llf lnv
|
||||||
|
yzt: plt uqv vnv
|
||||||
|
mqm: uso
|
||||||
|
myt: foi lap hdp
|
||||||
|
axd: esg vub wrs cnr
|
||||||
|
zyz: beg hsx hjd
|
||||||
|
ufi: fgo hsx beg
|
||||||
|
dfi: xcr
|
||||||
|
ecy: cub bid
|
||||||
|
fql: fes hdp lap
|
||||||
|
jjn: sei nsg peg
|
||||||
|
awz: gkh
|
||||||
|
cpl: wii
|
||||||
|
ous: sei nsg peg
|
||||||
|
efw: wia qww tln lkc
|
||||||
|
you: teg ndz ljf dga agc ikl zob oqw gra jbh gym zgm pye ctp ovj
|
||||||
|
cjp: ovj ctp zgm jbh gym gra ikl zob gju oqw agc dga ljf vwx bds lrv teg ndz bwj
|
||||||
|
lin: fgo
|
||||||
|
mxu: fje btx hhl wal
|
||||||
|
rwt: out
|
||||||
|
xed: eom fau blh dlw bjr apc vaz akc hmx jjk aan ebu haj yez ixr qnr poc qda
|
||||||
|
nlq: ooa jcy cub
|
||||||
|
ixj: cub jcy
|
||||||
|
lll: bey pmh inl gms mpg nkx ohv ofx fuo sha ahr nee xpe asv mcv
|
||||||
|
ybq: vkm
|
||||||
|
gci: ooa jcy
|
||||||
|
rfb: rsk
|
||||||
|
ywb: grr gni led
|
||||||
|
tya: opp
|
||||||
|
asj: yhv oyz
|
||||||
|
jpn: vnv
|
||||||
|
rqd: ymd nsb gki
|
||||||
|
qkg: tku irn
|
||||||
|
svr: lll vny xvx gaq
|
||||||
|
gqr: fft gjs ymt
|
||||||
|
chy: nyd vzu cmz
|
||||||
|
yza: uyb qlj oyz
|
||||||
|
nhd: sds gho
|
||||||
|
skd: yza cqj wnt vmk
|
||||||
|
eeo: lzk lkk
|
||||||
|
ykg: ctp ovj gym ikl gju gra fwv lrv bds vwx ljf bwj
|
||||||
|
fdm: bid
|
||||||
|
pdq: ayf fql myt irf btu
|
||||||
|
vvk: msf svn
|
||||||
|
zne: cub bid
|
||||||
|
gcs: tgk ykg
|
||||||
|
ooa: jjn xzi eoa ozq dki kor tga rtk ous mni
|
||||||
|
gjk: pcy
|
||||||
|
pgj: nim
|
||||||
|
ekb: dly qmy hwv
|
||||||
|
ive: xed nju kxy
|
||||||
|
omw: ufi
|
||||||
|
ehw: dob ctf
|
||||||
|
fvw: wei
|
||||||
|
pii: mxu zfo
|
||||||
|
ktj: fql irf btu
|
||||||
|
hmf: jcy
|
||||||
|
cgd: pcd rea qkg
|
||||||
|
xpe: ose iyx fvw uob
|
||||||
|
ztn: yvg nnb
|
||||||
|
wxi: weh dxf
|
||||||
|
ntl: ztd
|
||||||
|
oxb: mga aqd kpe ocg
|
||||||
|
cge: qjf pfe
|
||||||
|
svm: crj wlu ren hvz
|
||||||
|
nxt: uyb qlj oyz
|
||||||
|
cgq: hyr tun fei
|
||||||
|
ivr: upm jcm gkl fjv
|
||||||
|
jtq: ybb
|
||||||
|
dpn: pcd rea
|
||||||
|
qww: cjp tgk you
|
||||||
|
rxt: btt
|
||||||
|
afk: yrh wwz
|
||||||
|
nar: mfc bjj cin xyw
|
||||||
|
yck: out
|
||||||
|
svn: cjp ykg you tgk
|
||||||
|
uft: rcz ziq
|
||||||
|
upm: hcc
|
||||||
|
lzk: nkd
|
||||||
|
ufu: cub
|
||||||
|
qlj: xva nvs dpn dyd mtp cgd pdl rnk gjk otz jkd lmv atk pii ruj wdx vak sti eeo mqm jzd dwz tes tdq
|
||||||
|
irf: hdp fes
|
||||||
|
xlx: out
|
||||||
|
btu: foi
|
||||||
|
gjs: ysw xrt jpn blx yzt
|
||||||
|
apc: cae qqp
|
||||||
|
eoa: nfw
|
||||||
|
ocg: qcx uft htl gwu gaz
|
||||||
|
xva: hwx ovp lkk
|
||||||
|
klx: asj fbb bcp jdq
|
||||||
|
hhl: xyw
|
||||||
|
hwv: cub jcy ooa
|
||||||
|
ysj: hvz wlu crj
|
||||||
|
moo: qww tln nog
|
||||||
|
abt: vcs yvg nnb
|
||||||
|
jkd: nsb ymd huw
|
||||||
|
nwb: jcy cub
|
||||||
|
jlm: zrr rwt sdm izy
|
||||||
|
ofg: saj oli
|
||||||
|
zfo: dni
|
||||||
|
tgk: bwj ndz fwv teg bds lrv vwx ljf oqw gju ikl gra dga agc ovj gym jbh pye zgm
|
||||||
|
axv: xyw bjj
|
||||||
|
ils: oqh
|
||||||
|
dlw: bie qrb
|
||||||
|
hbl: cgq oli yga saj
|
||||||
|
kts: agr zhm zae
|
||||||
|
qnr: fmk rpb
|
||||||
|
fje: mfc bjj cin
|
||||||
|
nfm: whc
|
||||||
|
yxl: out
|
||||||
|
gwt: bbu
|
||||||
|
uzy: tgk cjp
|
||||||
|
ziq: mfc bjj xyw cin
|
||||||
|
tpx: out
|
||||||
|
zpz: cpl raa
|
||||||
|
may: gpn fdm nlq szf
|
||||||
|
nyd: cin
|
||||||
|
weh: kxy nju xed
|
||||||
|
lmv: pcy ztn
|
||||||
|
bjj: kgx cii mbv uzf hpv rok aso rpf eai qlq srd htg vpq cnn mvv rxt icw dfv pav yjs svm axd lqs
|
||||||
|
gkl: oae
|
||||||
|
rit: ofg ffa taw
|
||||||
|
wwz: sfu
|
||||||
|
wlu: ecy pgb rye
|
||||||
|
wul: qlj yhv
|
||||||
|
bgp: cjp
|
||||||
|
tga: jtb bpb
|
||||||
|
zzx: out
|
||||||
|
qki: iag iwy yvj
|
||||||
|
wdx: uso chy
|
||||||
|
dob: iep auh
|
||||||
|
llf: bvz
|
||||||
|
bvm: zhm whc agr
|
||||||
|
hmx: fmk
|
||||||
|
foi: rlt otu
|
||||||
|
yrh: tzi
|
||||||
|
bvz: isk
|
||||||
|
wqn: uht kjo fsk upc rit
|
||||||
|
ovj: vja xmv
|
||||||
|
lbs: uyb oyz
|
||||||
|
ljf: nni oek
|
||||||
|
bid: xyo kor ywb rtk ozq jjn
|
||||||
|
uzf: wrs blv cnr
|
||||||
|
yjs: esg
|
||||||
|
btx: bjj cin
|
||||||
|
avw: xyw
|
||||||
|
ehu: meq nwe qqg igv
|
||||||
|
jed: mfc xyw cin
|
||||||
|
aan: sfd lgg klx
|
||||||
|
fwv: xmv vja ntl
|
||||||
|
igv: xed
|
||||||
|
wal: cin xyw mfc
|
||||||
|
aqd: uft
|
||||||
|
gwu: rcz
|
||||||
|
gxr: skk
|
||||||
|
upc: hbl taw ffa tan ofg
|
||||||
|
hzv: nhd
|
||||||
|
izy: out
|
||||||
|
srd: viq
|
||||||
|
pav: izo bli sho
|
||||||
|
mbv: fuj ekb viq
|
||||||
|
emj: you
|
||||||
|
izo: vbw eor gpr ixj
|
||||||
|
vse: szf nlq fdm zne
|
||||||
|
pgb: jcy bid
|
||||||
|
jdq: yhv uyb
|
||||||
|
ayf: foi lap hdp fes
|
||||||
|
tzi: qjf
|
||||||
|
pcd: pub
|
||||||
|
yga: uzy
|
||||||
|
gpr: bid jcy cub
|
||||||
|
nim: ewr jlm crv rej
|
||||||
|
atk: oxb lzk
|
||||||
|
grr: moo qzv efw ewa drh
|
||||||
|
hzg: bhs yck
|
||||||
|
tft: btu irf myt fql
|
||||||
|
tdq: chy
|
||||||
|
uso: vzu
|
||||||
|
ymt: blx ysw
|
||||||
|
fbb: qlj uyb
|
||||||
|
zob: pdq
|
||||||
|
pss: hmc tif nwa
|
||||||
|
tnb: gbg vvk
|
||||||
|
qjf: nju
|
||||||
|
iej: nfw xcf
|
||||||
|
gkm: gni grr
|
||||||
|
mpg: kmv awz ovo rmn
|
||||||
|
dwz: pcy
|
||||||
|
blv: zpb tqj
|
||||||
|
ose: wlw ahy
|
||||||
|
ymg: xlx
|
||||||
|
sha: kmv rmn ovo rnw
|
||||||
|
eor: ooa
|
||||||
|
ldu: cub
|
||||||
|
nkg: gcs
|
||||||
|
wnt: yhv uyb
|
||||||
|
vae: you ykg tgk
|
||||||
|
pye: ved
|
||||||
|
rmn: gkh ukm bna
|
||||||
|
lqa: ggb xob
|
||||||
|
yhv: xva nvs dpn dyd mtp cgd ils pdl rnk gjk omj otz jkd atk lmv pii ruj vak sti eeo mqm jzd dwz rqd tdq
|
||||||
|
bhs: out
|
||||||
|
icw: urx
|
||||||
|
ltc: wul rhq vke
|
||||||
|
rhq: uyb
|
||||||
|
esg: zpb tqj vse
|
||||||
|
cub: rtk tga dtw jjn knm poh qqq dki iej
|
||||||
|
xyo: nkg ksw jtb vyn
|
||||||
|
nsg: psk tnb nhd
|
||||||
|
ysw: vnv
|
||||||
|
gkh: wxi oim fwq
|
||||||
|
akc: gqr rrs qoi
|
||||||
|
czy: wlu
|
||||||
|
jdr: ewr cot jlm crv
|
||||||
|
qqq: zpz
|
||||||
|
kyg: egc gjs ymt
|
||||||
|
agc: oek eds
|
||||||
|
bbf: mfc
|
||||||
|
ytw: kxy
|
||||||
|
tku: qxa dct qug
|
||||||
|
nsb: pss mjz dof
|
||||||
|
seb: yon
|
||||||
|
ggb: xed
|
||||||
|
nps: xed
|
||||||
|
tif: xyw bjj mfc
|
||||||
|
dsv: jed txn tif
|
||||||
|
nni: npo
|
||||||
|
dly: jcy cub
|
||||||
|
xcr: jlm rej crv ewr
|
||||||
|
hdp: ldh otu
|
||||||
|
ohv: vts ksc bqf
|
||||||
|
vmk: qlj yhv uyb oyz
|
||||||
|
qbg: cge huf sfu
|
||||||
|
bna: wxi tya fwq
|
||||||
|
ddi: jtk
|
||||||
|
trn: cqj
|
||||||
|
nwe: xed
|
||||||
|
ipz: upm gkl fjv
|
||||||
|
fco: tun fei uzy
|
||||||
|
rea: pub tku irn
|
||||||
|
bqf: qbg yrh
|
||||||
|
sho: gpr ixj qix vbw eor
|
||||||
|
pof: uob fvw iyx
|
||||||
|
isk: xlx vzx
|
||||||
|
dct: mfc bjj xyw cin
|
||||||
|
ntk: cnr wrs
|
||||||
|
nog: cjp ykg you tgk
|
||||||
|
rcz: bjj mfc cin
|
||||||
|
mfc: icw qlq eai vpq htg pav cnn mbv svm yjs
|
||||||
|
rlt: tpx zzx rnx
|
||||||
|
mau: bjj cin
|
||||||
|
pxj: dfi pgj way
|
||||||
|
xvw: cjp tgk you ykg
|
||||||
|
bds: bvm nfm kts
|
||||||
|
rpf: qvw wgo gij
|
||||||
|
vzu: bjj mfc
|
||||||
|
qae: yck bhs qtl
|
||||||
|
dxf: kxy nju
|
||||||
|
omj: oxb lzk hwx
|
||||||
|
pgs: mfc bjj xyw
|
||||||
|
ndz: eds oek nni
|
||||||
|
mni: peg sei nwl hzv
|
||||||
|
ewr: zrr izy
|
||||||
|
mtf: oyz yhv
|
||||||
|
yon: bid jcy cub
|
||||||
|
jbx: upm jcm gkl
|
||||||
|
gaz: axv ziq rcz
|
||||||
|
qcx: rcz qop axv
|
||||||
|
gij: yow
|
||||||
|
rnk: oqh
|
||||||
|
iwy: vke rhq
|
||||||
|
uqv: oyz uyb qlj
|
||||||
|
sfu: zmb qjf
|
||||||
|
nwa: bjj
|
||||||
|
ttm: gqr rrs kyg qoi
|
||||||
|
jtb: gcs uwx xvw
|
||||||
|
nkx: iyx
|
||||||
|
rtk: rit upc fsk kjo uht
|
||||||
|
agr: pcz omw
|
||||||
|
oqh: btx fje wal
|
||||||
|
fau: fmk rpb srh
|
||||||
|
sfd: jdq bcp asj
|
||||||
|
fjv: nxt oae
|
||||||
|
ojz: seb pao ybb
|
||||||
|
qix: bid
|
||||||
|
way: jdr
|
||||||
|
jbh: wuo
|
||||||
|
unc: kxy xed
|
||||||
|
kbp: ydb xob ggb unc
|
||||||
|
hvz: pgb mbm rye
|
||||||
|
wii: tgk you cjp
|
||||||
|
dga: kts nfm bvm
|
||||||
|
bpb: uwx
|
||||||
|
inl: wst ehu qqa
|
||||||
|
zee: wjp qae ddi
|
||||||
|
pdl: ovp hwx lzk oxb
|
||||||
|
gra: kts
|
||||||
|
crv: sdm rwt
|
||||||
|
oqw: lto
|
||||||
|
xzi: uht kjo fsk
|
||||||
|
hyr: you
|
||||||
|
xis: cqj yza lbs vmk wnt
|
||||||
|
ahy: lfd ive
|
||||||
|
plr: yrh
|
||||||
|
fgo: out
|
||||||
|
qvw: ehw ppo yow
|
||||||
|
viq: qmy
|
||||||
|
plt: oyz yhv
|
||||||
|
hmc: cin mfc
|
||||||
|
btt: qix eor vbw
|
||||||
|
pfe: nju xed
|
||||||
|
yvg: bbf eqo
|
||||||
|
tes: abt ztn pcy
|
||||||
|
fmk: ivr oyg fno ipz
|
||||||
|
mjr: iwy ltc
|
||||||
|
txn: cin mfc bjj
|
||||||
|
mhd: hzg ddi wjp skk
|
||||||
|
vaz: gyo cae qqp
|
||||||
90
11/main.go
Normal file
90
11/main.go
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"git.z1glr.de/advent-of-code-2025/pkg/aoc"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Server struct {
|
||||||
|
Start, Out bool
|
||||||
|
Destinations map[string]*Server
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Server) Walk() int {
|
||||||
|
if s.Out {
|
||||||
|
return 1
|
||||||
|
} else {
|
||||||
|
routes := 0
|
||||||
|
|
||||||
|
for _, dd := range s.Destinations {
|
||||||
|
routes += dd.Walk()
|
||||||
|
}
|
||||||
|
|
||||||
|
return routes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ParseServerLine(s string) (*Server, string) {
|
||||||
|
stringFields := strings.Fields(s)
|
||||||
|
|
||||||
|
returnServer := Server{
|
||||||
|
Destinations: make(map[string]*Server),
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, ff := range stringFields[1:] {
|
||||||
|
switch ff {
|
||||||
|
case "you":
|
||||||
|
returnServer.Start = true
|
||||||
|
case "out":
|
||||||
|
returnServer.Out = true
|
||||||
|
default:
|
||||||
|
returnServer.Destinations[ff] = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return &returnServer, stringFields[0][:len(stringFields[0])-1]
|
||||||
|
}
|
||||||
|
|
||||||
|
func do(test bool) (int, int) {
|
||||||
|
rows := aoc.ReadFileRows(test)
|
||||||
|
|
||||||
|
servers := make(map[string]*Server)
|
||||||
|
|
||||||
|
starts := []*Server{}
|
||||||
|
|
||||||
|
for _, rr := range rows {
|
||||||
|
thisServer, name := ParseServerLine(rr)
|
||||||
|
|
||||||
|
servers[name] = thisServer
|
||||||
|
|
||||||
|
if thisServer.Start {
|
||||||
|
starts = append(starts, thisServer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// populate destinations
|
||||||
|
for ii := range servers {
|
||||||
|
ss := servers[ii]
|
||||||
|
for dd := range ss.Destinations {
|
||||||
|
ss.Destinations[dd] = servers[dd]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
routes := 0
|
||||||
|
|
||||||
|
for _, ss := range starts[:1] {
|
||||||
|
routes += ss.Walk()
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(routes)
|
||||||
|
|
||||||
|
return routes, 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
if r1, r2 := do(true); r1 == 5 && r2 == 0 {
|
||||||
|
do(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user