32 lines
501 B
Go
32 lines
501 B
Go
|
package main
|
||
|
|
||
|
import "fmt"
|
||
|
|
||
|
type Bots map[Coordinate][]int
|
||
|
|
||
|
func NewBots(input []string) Bots {
|
||
|
m := make(Bots)
|
||
|
for _, data := range input {
|
||
|
var r int
|
||
|
var c Coordinate
|
||
|
_, err := fmt.Sscanf(data, "pos=<%d,%d,%d>, r=%d", &c.X, &c.Y, &c.Z, &r)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
m[c] = append(m[c], r)
|
||
|
}
|
||
|
return m
|
||
|
}
|
||
|
|
||
|
func (m Bots) HaveInRange(pos Coordinate) int {
|
||
|
var sum int
|
||
|
for c, rs := range m {
|
||
|
for _, r := range rs {
|
||
|
if pos.Distance(c) <= r {
|
||
|
sum++
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return sum
|
||
|
}
|