summaryrefslogtreecommitdiff
path: root/go/grains/grains.go
blob: 22bbdda9e3da0d7e6c1bf8e2cf7dc10ef7765949 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package grains

import "errors"

func Square(n int) (uint64, error) {
	if n < 1 || n > 64 {
		return 0, errors.New("out of range")
	}
	return 1 << uint(n-1), nil
}

func Total() uint64 {
	var n uint64
	for i := 0; i < 64; i++ {
		s, _ := Square(i + 1)
		n += s
	}
	return n
}