package main import h "git.bullercodeworks.com/brian/adventofcode/helpers" type Square struct { Tl h.Coordinate3d Br h.Coordinate3d } func (s *Square) Contains(p h.Coordinate3d) bool { return p.X >= s.Tl.X && p.Y >= s.Tl.Y && p.X <= s.Br.X && p.Y <= s.Br.Y } func (s *Square) IsInBorder(p h.Coordinate3d) bool { if !s.Contains(p) { return false } if p.Y == s.Tl.Y || p.Y == s.Br.Y { return p.X >= s.Tl.X || p.X <= s.Br.X } else if p.X == s.Tl.X || p.X == s.Br.X { return p.Y >= s.Tl.Y || p.Y <= s.Br.Y } return false } func (s *Square) ContainsButNotBorder(p h.Coordinate3d) bool { return s.Contains(p) && !s.IsInBorder(p) }