tried stuff - nothing works yet

This commit is contained in:
Simon Ziegler
2025-12-11 17:58:03 +01:00
parent aee88264c5
commit 500de11910
4 changed files with 711 additions and 6 deletions

90
11/main.go Normal file
View 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)
}
}