package day7_pg import ( "iter" "git.bizdoc.ro/gabi-public/Advent-of-Code.git/aoc" "git.bizdoc.ro/private/devkit.git/collections/dsa" "git.bizdoc.ro/private/devkit.git/collections/geometry/v2" ) type Day7Part1RenderEvent struct { Point geometry.Point Grid geometry.Grid[byte] TotalProcessed int64 Step int } func Day7ProgressFillPart1(g geometry.Grid[byte], start geometry.Point) iter.Seq[Day7Part1RenderEvent] { return func(yield func(Day7Part1RenderEvent) bool) { stack := dsa.NewStack[geometry.Point]() stack.Push(start) ev := Day7Part1RenderEvent{ Point: start, Grid: g, TotalProcessed: 0, } for !stack.IsEmpty() { start := stack.Pop() if g.ContainsPoint(start) { switch g.At(start) { case 'S': stack.Push(start.MoveDown()) case '.': g.Set(start, '|') stack.Push(start.MoveDown()) case '^': stack.Push(start.MoveRight()) stack.Push(start.MoveLeft()) ev.TotalProcessed += 1 } } ev.Step += 1 if !yield(ev) { return } } } } func Day7Part1Render(c aoc.Context) (int, error) { panic("not implmented") //g, start, err := day7ParseInput(c) //if err != nil { // return 0, fmt.Errorf("day7: failed to parse input %w", err) //} //var ev Day7Part1RenderEvent //for ev = range Day7ProgressFillPart1(g, start) { //} //return int(ev.TotalProcessed), nil }