func (b *Board) hasSingleUsedGroup() bool {
	seenTileIds := make(map[tile.ID]struct{})
	for x, yTiles := range b.UsedTileLocs {
		for y, t := range yTiles {
			b.addSeenTileIDs(int(x), int(y), t, seenTileIds)
			break // only check one tile's surrounding tilePositions
		}
		break
	}
	return len(seenTileIds) == len(b.UsedTiles)
}
// hasSingleUsedGroup determines if the player's tiles form a single group (or none),
// with all tiles connected via immediate horizontal and vertical neighbors.
hasSingleUsedGroup determines if the player's tiles form a single group (or none),
with all tiles connected via immediate horizontal and vertical neighbors.
// hasSingleUsedGroup determines if the player ' s tiles form a single group ( or none ) // with all tiles connected via immediate horizontal and vertical neighbors .
func (b *Board) hasSingleUsedGroup() bool {
	seenTileIds := make(map[tile.ID]struct{})
	for x, yTiles := range b.UsedTileLocs {
		for y, t := range yTiles {
			b.addSeenTileIDs(int(x), int(y), t, seenTileIds)
			break 
		}
		break
	}
	return len(seenTileIds) == len(b.UsedTiles)
}
func ( b * Board ) hasSingleUsedGroup ( ) bool { seenTileIds := make ( map [ tile . ID ] struct { } ) for x , yTiles := range b . UsedTileLocs { for y , t := range yTiles { b . addSeenTileIDs ( int ( x ) , int ( y ) , t , seenTileIds ) break } break } return len ( seenTileIds ) == len ( b . UsedTiles ) }
hasSingleUsedGroup determines if the player's tiles form a single group (or none),
with all tiles connected via immediate horizontal and vertical neighbors.
hasSingleUsedGroup determines if the player ' s tiles form a single group ( or none ) with all tiles connected via immediate horizontal and vertical neighbors .
// only check one tile's surrounding tilePositions