28 lines
610 B
Go
28 lines
610 B
Go
package summultiples
|
|
|
|
// MultipleSummer takes a variable number of ints
|
|
// and returns a function that, when given a limit
|
|
// returns the sum of the multiples up to that limit
|
|
func MultipleSummer(mults ...int) func(int) int {
|
|
return func(limit int) int {
|
|
var ret int
|
|
for i := range mults {
|
|
sumMult := mults[i]
|
|
for sumMult < limit {
|
|
var skip bool
|
|
for j := 0; j < i && !skip; j++ {
|
|
// Make sure that we haven't already added sumMult
|
|
if sumMult%mults[j] == 0 {
|
|
skip = true
|
|
}
|
|
}
|
|
if !skip {
|
|
ret += sumMult
|
|
}
|
|
sumMult += mults[i]
|
|
}
|
|
}
|
|
return ret
|
|
}
|
|
}
|