// Unused solution: this works fine for the example, but doesn't work at all for the
// real input data.
package day10

import "fmt" // debug

// AnalyzePoints tries to determine whether the data looks sufficiently ordered.
// It returns 'true' if it thinks we've got letters.
func AnalyzePoints(points []*Point) bool {
	pointArr := makeBuffer(points)

	// count adjacencies
	count := 0

	for y := 0; y < len(pointArr[0]); y++ {
		for x := 0; x < len(pointArr); x++ {
			if pointArr[x][y] != '#' {
				continue
			}

			if checkPoint(pointArr, x-1, y) ||
				checkPoint(pointArr, x+1, y) ||
				checkPoint(pointArr, x, y-1) ||
				checkPoint(pointArr, x, y+1) {
				count++
			}
		}
	}

	fmt.Println(float64(count) / float64(len(points))) // debug
	return float64(count) >= 0.8*float64(len(points))
}

// Checks the point in the grid. If it is '#' returns true.
func checkPoint(grid [][]byte, x, y int) bool {
	if x < 0 || x >= len(grid) ||
		y < 0 || y >= len(grid[0]) {
		return false
	}

	if grid[x][y] == '#' {
		return true
	}

	return false
}