func NewFromFile(path string) (*Board, error) {
	f, err := os.Open(path)
	if err != nil {
		return nil, err
	}

	b := new(Board)
	if err := json.NewDecoder(f).Decode(b); err != nil {
		return nil, err
	}
	b.Grid = newGrid(len(b.RowHints), len(b.ColHints))

	return b, nil
}
// NewFromFile opens a board game from a json file and returns it
NewFromFile opens a board game from a json file and returns it
// NewFromFile opens a board game from a json file and returns it
func NewFromFile(path string) (*Board, error) {
	f, err := os.Open(path)
	if err != nil {
		return nil, err
	}
	b := new(Board)
	if err := json.NewDecoder(f).Decode(b); err != nil {
		return nil, err
	}
	b.Grid = newGrid(len(b.RowHints), len(b.ColHints))
	return b, nil
}
func NewFromFile ( path string ) ( * Board , error ) { f , err := os . Open ( path ) if err != nil { return nil , err } b := new ( Board ) if err := json . NewDecoder ( f ) . Decode ( b ) ; err != nil { return nil , err } b . Grid = newGrid ( len ( b . RowHints ) , len ( b . ColHints ) ) return b , nil }
NewFromFile opens a board game from a json file and returns it
NewFromFile opens a board game from a json file and returns it