From bf9341f9eb4b709f944615e15ee409c6bc3ab11c Mon Sep 17 00:00:00 2001 From: Anastasios Chatzialexiou <16361161+tasxatzial@users.noreply.github.com> Date: Tue, 26 Sep 2023 21:01:12 +0300 Subject: [PATCH] Sum of multiples: Sync with problem-specifications (#579) * Sync metadata * Implement & update tests --- .../sum-of-multiples/.meta/config.json | 2 +- .../sum-of-multiples/.meta/tests.toml | 2 + .../test/sum_of_multiples_test.clj | 72 ++++++++++++------- 3 files changed, 49 insertions(+), 27 deletions(-) diff --git a/exercises/practice/sum-of-multiples/.meta/config.json b/exercises/practice/sum-of-multiples/.meta/config.json index 1657bed1..818d25da 100644 --- a/exercises/practice/sum-of-multiples/.meta/config.json +++ b/exercises/practice/sum-of-multiples/.meta/config.json @@ -21,5 +21,5 @@ }, "blurb": "Given a number, find the sum of all the multiples of particular numbers up to but not including that number.", "source": "A variation on Problem 1 at Project Euler", - "source_url": "http://projecteuler.net/problem=1" + "source_url": "https://projecteuler.net/problem=1" } diff --git a/exercises/practice/sum-of-multiples/.meta/tests.toml b/exercises/practice/sum-of-multiples/.meta/tests.toml index 365c12fd..8619ce26 100644 --- a/exercises/practice/sum-of-multiples/.meta/tests.toml +++ b/exercises/practice/sum-of-multiples/.meta/tests.toml @@ -43,9 +43,11 @@ description = "no factors means an empty sum" [214a01e9-f4bf-45bb-80f1-1dce9fbb0310] description = "the only multiple of 0 is 0" +include = false [c423ae21-a0cb-4ec7-aeb1-32971af5b510] description = "the factor 0 does not affect the sum of multiples of other factors" +include = false [17053ba9-112f-4ac0-aadb-0519dd836342] description = "solutions using include-exclude must extend to cardinality greater than 3" diff --git a/exercises/practice/sum-of-multiples/test/sum_of_multiples_test.clj b/exercises/practice/sum-of-multiples/test/sum_of_multiples_test.clj index d0e8d68c..52281691 100644 --- a/exercises/practice/sum-of-multiples/test/sum_of_multiples_test.clj +++ b/exercises/practice/sum-of-multiples/test/sum_of_multiples_test.clj @@ -1,39 +1,59 @@ (ns sum-of-multiples-test - (:require [clojure.test :refer [deftest is]] - sum-of-multiples)) + (:require [clojure.test :refer [deftest testing is]] + [sum-of-multiples :refer [sum-of-multiples]])) -(deftest sum-to-1 - (is (zero? (sum-of-multiples/sum-of-multiples '(3 5) 1)))) +(deftest no-multiples + (testing "No multiples within limit" + (is (zero? (sum-of-multiples '(3 5) 1))))) -(deftest sum-to-4 - (is (= 3 (sum-of-multiples/sum-of-multiples '(3 5) 4)))) +(deftest one-factor-multiples + (testing "One factor has multiples within limit" + (is (= 3 (sum-of-multiples '(3 5) 4))))) -(deftest sum-to-10 - (is (= 23 (sum-of-multiples/sum-of-multiples '(3 5) 10)))) +(deftest more-than-one-multiple + (testing "More than one multiple within limit" + (is (= 9 (sum-of-multiples '(3) 7))))) -(deftest sum-to-100 - (is (= 2318 (sum-of-multiples/sum-of-multiples '(3 5) 100)))) +(deftest more-than-one-factor-multiples + (testing "More than one factor with multiples within limit" + (is (= 23 (sum-of-multiples '(3 5) 10))))) -(deftest sum-to-1000 - (is (= 233168 (sum-of-multiples/sum-of-multiples '(3 5) 1000)))) +(deftest count-multiples-once + (testing "Each multiple is only counted once" + (is (= 2318 (sum-of-multiples '(3 5) 100))))) -(deftest sum-to-20-using-7-13-17 - (is (= 51 (sum-of-multiples/sum-of-multiples '(7 13 17) 20)))) +(deftest larger-limit + (testing "A much larger limit" + (is (= 233168 (sum-of-multiples '(3 5) 1000))))) -(deftest sum-to-15-using-4-6 - (is (= 30 (sum-of-multiples/sum-of-multiples '(4 6) 15)))) +(deftest three-factors + (testing "Three factors" + (is (= 51 (sum-of-multiples '(7 13 17) 20))))) -(deftest sum-to-150-using-5-6-8 - (is (= 4419 (sum-of-multiples/sum-of-multiples '(5 6 8) 150)))) +(deftest factors-not-relatively-prime + (testing "Factors not relatively prime" + (is (= 30 (sum-of-multiples '(4 6) 15))))) -(deftest sum-to-51-using-5-25 - (is (= 275 (sum-of-multiples/sum-of-multiples '(5 25) 51)))) +(deftest some-factors-relatively-prime + (testing "Some pairs of factors relatively prime and some not" + (is (= 4419 (sum-of-multiples '(5 6 8) 150))))) -(deftest sum-to-10_000-using-43-47 - (is (= 2203160 (sum-of-multiples/sum-of-multiples '(43 47) 10000)))) +(deftest factor-multiple-of-other-factor + (testing "One factor is a multiple of another" + (is (= 275 (sum-of-multiples '(5 25) 51))))) -(deftest sum-to-100-using-1 - (is (= 4950 (sum-of-multiples/sum-of-multiples '(1) 100)))) +(deftest larger-factors + (testing "Much larger factors" + (is (= 2203160 (sum-of-multiples '(43 47) 10000))))) -(deftest sum-to-10_000-using-empty - (is (zero? (sum-of-multiples/sum-of-multiples '() 10000)))) +(deftest all-factors-multiples-of-1 + (testing "All factors are multiples of 1" + (is (= 4950 (sum-of-multiples '(1) 100))))) + +(deftest no-factors + (testing "No factors means sum is 0" + (is (zero? (sum-of-multiples '() 10000))))) + +(deftest more-than-three-factors + (testing "More than 3 factors" + (is (= 39614537 (sum-of-multiples '(2 3 5 7 11) 10000)))))