Write a function called Chunk that receives as parameters a slice, slice []int, and a number size int. The goal of this function is to chunk a slice into many sub slices where each sub slice has the length of size.
If the size is 0 it should print a newline ('\n').
Usage
Here is a possible program to test your function :
package main
func main() {
Chunk([]int{}, 10)
Chunk([]int{0, 1, 2, 3, 4, 5, 6, 7}, 0)
Chunk([]int{0, 1, 2, 3, 4, 5, 6, 7}, 3)
Chunk([]int{0, 1, 2, 3, 4, 5, 6, 7}, 5)
Chunk([]int{0, 1, 2, 3, 4, 5, 6, 7}, 4)
}
And its output :
$ go run .
[]
[[0 1 2] [3 4 5] [6 7]]
[[0 1 2 3 4] [5 6 7]]
[[0 1 2 3] [4 5 6 7]]
$
package kata
import "fmt"
func Chunk(slice []int, size int) string {
if len(slice) < size {
return fmt.Sprint(slice)
}
if size == 0 {
return ""
}
arr := [][]int{}
for len(slice) > size {
arr = append(arr, slice[:size])
slice = slice[size:]
}
arr = append(arr, slice)
return fmt.Sprint(arr)
}
// TODO: replace with your own tests (TDD). An example to get you started is included below.
// Ginkgo BDD Testing Framework <http://onsi.github.io/ginkgo/>
// Gomega Matcher Library <http://onsi.github.io/gomega/>
package kata_test
import (
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "codewarrior/kata"
)
var _ = Describe("Test Example", func() {
It("should test that the solution returns the correct value", func() {
Expect(Chunk([]int{}, 10)).To(Equal("[]"))
Expect(Chunk([]int{0, 1, 2, 3, 4, 5, 6, 7}, 0)).To(Equal(""))
Expect(Chunk([]int{0, 1, 2, 3, 4, 5, 6, 7}, 3)).To(Equal("[[0 1 2] [3 4 5] [6 7]]"))
})
})