Skip to content

Commit 47ccc69

Browse files
Merge pull request #87 from ErikSchierboom/sum-of-multiples-simplification
Simplify sum-of-multiples exercise. Fixes #85
2 parents faeabe3 + 74c2032 commit 47ccc69

File tree

2 files changed

+19
-42
lines changed

2 files changed

+19
-42
lines changed

exercises/sum-of-multiples/Example.fs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
11
module SumOfMultiples
22

3-
type SumOfMultiples(multiples) =
4-
let isMultiple(input: int) =
5-
multiples |> List.exists(fun multiple -> input % multiple = 0)
6-
7-
new() = SumOfMultiples([3; 5])
8-
9-
member this.Multiples = multiples
10-
11-
member this.To(limit: int) =
12-
[1..limit - 1]
13-
|> List.filter(fun item -> isMultiple(item))
14-
|> List.sum
3+
let sumOfMultiples numbers upperBound =
4+
let isMultiple x = numbers |> List.exists (fun y -> x % y = 0)
5+
6+
[1 .. upperBound - 1] |> List.filter isMultiple |> List.sum

exercises/sum-of-multiples/SumOfMultiplesTest.fs

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,22 @@ module SumOfMultiplesTest
33
open NUnit.Framework
44
open SumOfMultiples
55

6-
type SumOfMultiplesTest() =
7-
[<Test>]
8-
member tc.Sum_to_1() =
9-
Assert.That(SumOfMultiples().To(0), Is.EqualTo(0))
6+
[<Test>]
7+
let ``Sum to 1``() =
8+
Assert.That(sumOfMultiples [3; 5] 0, Is.EqualTo(0))
109

11-
[<Test>]
12-
[<Ignore("Remove to run test")>]
13-
member tc.Sum_to_3() =
14-
Assert.That(SumOfMultiples().To(3), Is.EqualTo(0))
10+
[<Test>]
11+
let ``Sum to 3``() =
12+
Assert.That(sumOfMultiples [3; 5] 3, Is.EqualTo(0))
1513

16-
[<Test>]
17-
[<Ignore("Remove to run test")>]
18-
member tc.Sum_to_10() =
19-
Assert.That(SumOfMultiples().To(10), Is.EqualTo(23))
14+
[<Test>]
15+
let ``Sum to 10``() =
16+
Assert.That(sumOfMultiples [3; 5] 10, Is.EqualTo(23))
2017

21-
[<Test>]
22-
[<Ignore("Remove to run test")>]
23-
member tc.Sum_to_100() =
24-
Assert.That(SumOfMultiples().To(100), Is.EqualTo(2318))
18+
[<Test>]
19+
let ``Sum to 20``() =
20+
Assert.That(sumOfMultiples [7; 13; 17] 20, Is.EqualTo(51))
2521

26-
[<Test>]
27-
[<Ignore("Remove to run test")>]
28-
member tc.Sum_to_1000() =
29-
Assert.That(SumOfMultiples().To(1000), Is.EqualTo(233168))
30-
31-
[<Test>]
32-
[<Ignore("Remove to run test")>]
33-
member tc.Configurable_7_13_17_to_20() =
34-
Assert.That(SumOfMultiples([7; 13; 17]).To(20), Is.EqualTo(51))
35-
36-
[<Test>]
37-
[<Ignore("Remove to run test")>]
38-
member tc.Configurable_43_47_to_10000() =
39-
Assert.That(SumOfMultiples([43; 47]).To(10000), Is.EqualTo(2203160))
22+
[<Test>]
23+
let ``Sum to 10000``() =
24+
Assert.That(sumOfMultiples [43; 47] 10000, Is.EqualTo(2203160))

0 commit comments

Comments
 (0)