func visibleFromAsteroid(grid [][]string, row, col int) (result int) {
	leftMap, rightMap := make(map[float64]bool), make(map[float64]bool)
	var upBool, downBool bool
	for rowIndex, rowSlice := range grid {
		for colIndex, element := range rowSlice {
			if element == "#" && !(row == rowIndex && col == colIndex) {
				rise := rowIndex - row
				run := colIndex - col
				if run == 0 {
					if rise < 0 {
						if !downBool {
							downBool = true
							result++
						}
					} else {
						if !upBool {
							upBool = true
							result++
						}
					}
				} else {
					slope := float64(rise) / float64(run)
					if run < 0 {
						if _, inLeftMap := leftMap[slope]; !inLeftMap {
							leftMap[slope] = true
							result++
						}
					} else {
						if _, inRightMap := rightMap[slope]; !inRightMap {
							rightMap[slope] = true
							result++
						}
					}
				}
			}
		}
	}
	return result
}
helper function will take, x and y coordinates, and the 2D slice
will create a two maps of floats to booleans
(one map to cover left side of asteroid, one map to cover right side of asteroid)
so that anything that is blocked will not be double counted
and edge case handling for planets vertically above or below the current asteroid
package main
import (
	"fmt"
	"strings"
	"github.com/alexchao26/advent-of-code-go/util"
)
func main() {
	input := util.ReadFile("../input.txt")
	stringSlice := strings.Split(input, "\n")
	gridSlice := make([][]string, len(stringSlice))
	for i, str := range stringSlice {
		gridSlice[i] = strings.Split(str, "")
	}
	var result int
	var finalCoords [2]int
	for rowIndex, rowSlice := range gridSlice {
		for colIndex, element := range rowSlice {
			if element == "#" {
				visibleFromElement := visibleFromAsteroid(gridSlice, rowIndex, colIndex)
				if result < visibleFromElement {
					result = visibleFromElement
					finalCoords[0], finalCoords[1] = rowIndex, colIndex
				}
			}
		}
	}
	fmt.Printf("best asteroid for the station: row[%v] col[%v]\n", finalCoords[0], finalCoords[1])  
	fmt.Println("from 13, 11 (y, x)", result)
}