Sha256: 57db9db6350ebb8a9d404da292ce74d06a9ed600268639b3fd9bf229d8d9a71b

Contents?: true

Size: 783 Bytes

Versions: 274

Compression:

Stored size: 783 Bytes

Contents

package grains

import (
	"fmt"
)

const testVersion = 1

// Square returns the number of grains on a square on a chess board where the
// first square has 1 and every subsequent square doubles the number.
func Square(num int) (uint64, error) {
	if num < 1 || num > 64 {
		return 0, fmt.Errorf("Input[%d] invalid. Input should be between 1 and 64 (inclusive)", num)
	}
	// a left shift is equivalent to multiplying by 2.  So we need to left
	// shift by num-1 times to get the number of grains on that square
	return 1 << (uint16(num) - 1), nil
}

// Total returns the total number of grains on the chess board
func Total() uint64 {
	// the number of grains added up to any point on the board is simply
	// two to the power of that number - 1 (because maths)
	return (1 << 64) - 1
}

Version data entries

274 entries across 274 versions & 1 rubygems

Version Path
trackler-2.2.1.56 tracks/go/exercises/grains/example.go
trackler-2.2.1.55 tracks/go/exercises/grains/example.go
trackler-2.2.1.54 tracks/go/exercises/grains/example.go
trackler-2.2.1.53 tracks/go/exercises/grains/example.go
trackler-2.2.1.52 tracks/go/exercises/grains/example.go
trackler-2.2.1.51 tracks/go/exercises/grains/example.go
trackler-2.2.1.50 tracks/go/exercises/grains/example.go
trackler-2.2.1.49 tracks/go/exercises/grains/example.go
trackler-2.2.1.48 tracks/go/exercises/grains/example.go
trackler-2.2.1.47 tracks/go/exercises/grains/example.go
trackler-2.2.1.46 tracks/go/exercises/grains/example.go
trackler-2.2.1.45 tracks/go/exercises/grains/example.go
trackler-2.2.1.44 tracks/go/exercises/grains/example.go
trackler-2.2.1.43 tracks/go/exercises/grains/example.go
trackler-2.2.1.42 tracks/go/exercises/grains/example.go
trackler-2.2.1.41 tracks/go/exercises/grains/example.go
trackler-2.2.1.40 tracks/go/exercises/grains/example.go
trackler-2.2.1.39 tracks/go/exercises/grains/example.go
trackler-2.2.1.38 tracks/go/exercises/grains/example.go
trackler-2.2.1.37 tracks/go/exercises/grains/example.go