Move History

Fork Selected
  • Code
    package kata
    
    func IntegerSum(n int) (sum int) {
      sum = n * (n+1) / 2
      return
    }
    
    func AddMultiples(n int) (sum int) {
      sum = IntegerSum((n-1)/3) * 3 + IntegerSum((n-1)/5) * 5 - IntegerSum((n-1)/15) * 15
      return 
    }
    Test Cases
    package kata_test
    import (
      . "github.com/onsi/ginkgo"
      . "github.com/onsi/gomega"
      . "codewarrior/kata"
    )
    var _ = Describe("Multiples of 3 and 5", func() {
       
       It("should handle basic cases", func() {
         Expect(AddMultiples(10)).To(Equal(23))
         Expect(AddMultiples(20)).To(Equal(78))
       })
       
       It("should handle zeroes", func() {
         Expect(AddMultiples(0)).To(Equal(0))
         Expect(AddMultiples(1)).To(Equal(0))
       })
       
       It("should handle large numbers", func() {
         Expect(AddMultiples(200)).To(Equal(9168))
       })
    })
  • Code
    • package kata
    • func AddMultiples(n int) (sum int) {
    • for i := 1; i < n; i++ {
    • if i % 3 == 0 || i % 5 == 0 {
    • sum += i
    • }
    • }
    • func IntegerSum(n int) (sum int) {
    • sum = n * (n+1) / 2
    • return
    • }
    • func AddMultiples(n int) (sum int) {
    • sum = IntegerSum((n-1)/3) * 3 + IntegerSum((n-1)/5) * 5 - IntegerSum((n-1)/15) * 15
    • return
    • }