package grains import "errors" // Square just takes 1 * 2^sq func Square(sq int) (uint64, error) { if sq > 0 && sq < 65 { return (1 << uint(sq-1)), nil } return 0, errors.New("Invalid Square Requested") } // TotalForSquare calculates the total number // for all squares up to sq (cause why not) func TotalForSquare(sq int) (uint64, error) { if sq < 0 || sq > 64 { return 0, errors.New("Invalid Square Requested") } var ret uint64 for i := 0; i <= sq; i++ { ret = (ret << 1) | 1 } return ret, nil } // Total calculates the total for the entire board func Total() uint64 { ret, _ := TotalForSquare(64) return ret }