package main import ( "fmt" h "git.bullercodeworks.com/brian/adventofcode/helpers" ) func main() { inp := h.StdinToStringSlice() part1(inp) fmt.Println() part2(inp) } func part1(inp []string) { c := h.StringSliceToCoordByteMap(inp) anC := h.StringSliceToCoordByteMap(inp) nodes := c.FindAllNot('.') for k, bt := range nodes { fNodes := c.FindAll(bt) for _, nd := range fNodes { if k.Equals(nd) { continue } diff := k.Sub(nd) an := k.Add(diff) if anC.ContainsCoord(an) { anC.Put(k.Add(diff), '#') } } } fmt.Println("# Part 1") fmt.Println("Antinodes:", anC.Count('#')) } func part2(inp []string) { c := h.StringSliceToCoordByteMap(inp) anC := h.StringSliceToCoordByteMap(inp) nodes := c.FindAllNot('.') for k, bt := range nodes { fNodes := c.FindAll(bt) for _, nd := range fNodes { anC.Put(nd, '#') anC.Put(k, '#') if k.Equals(nd) { continue } diff := k.Sub(nd) an := k.Add(diff) for anC.ContainsCoord(an) { anC.Put(an, '#') an = an.Add(diff) } } } fmt.Println("# Part 2") fmt.Println("Antinodes:", anC.Count('#')) }