## The challenge

Given a month as an integer from 1 to 12, return to which quarter of the year it belongs as an integer number.

For example: month 2 (February), is part of the first quarter; month 6 (June), is part of the second quarter; and month 11 (November), is part of the fourth quarter.

## The solution in Golang

Option 1:

 ``````1 2 3 4 5 `````` ``````package solution func QuarterOf(month int) int { return (month + 2) / 3 } ``````

Option 2:

 ``````1 2 3 4 5 6 7 8 `````` ``````package solution import("math") func QuarterOf(month int) int { quarter := math.Ceil(float64(month)/3) return int(quarter) } ``````

Option 3:

 ``````1 2 3 4 5 6 `````` ``````package solution func QuarterOf(month int) int { q := int{1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4} return q[month-1] } ``````

## Test cases to validate our solution

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 `````` ``````package our_test import ( "time" "math" "math/rand" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Test Example", func() { It("should test all values", func() { for i := 1; i < 13; i++ { Expect(QuarterOf(i)).To(Equal(solution(i))) } }) It("should test random values", func() { rand.Seed(time.Now().UnixNano()) for i := 1; i < 100; i++ { n := rand.Intn(12)+1 Expect(QuarterOf(n)).To(Equal(solution(n))) } }) }) func solution(month int) int { return int(math.Ceil(float64(month) / 3)) } ``````