From 0fe4b3ecb7dbc8c2b6edf1c9d78d02d86710570f Mon Sep 17 00:00:00 2001 From: Fuad Date: Sun, 20 Nov 2016 01:59:38 -0600 Subject: [PATCH 1/8] Sum of Multiples Solution - This code is the solution for the un-implemented Sum of Multiple problem. - Includes Test File which checks each test case indicated here: https://github.com/exercism/x-common/blob/master/exercises/sum-of-multip les/canonical-data.json --- .../src/java/SumOfMultiples.java | 31 +++++ .../src/test/SumOfMultiplesTest.java | 129 ++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 exercises/SumOfMultiples/src/java/SumOfMultiples.java create mode 100644 exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java diff --git a/exercises/SumOfMultiples/src/java/SumOfMultiples.java b/exercises/SumOfMultiples/src/java/SumOfMultiples.java new file mode 100644 index 000000000..7b2ceb19b --- /dev/null +++ b/exercises/SumOfMultiples/src/java/SumOfMultiples.java @@ -0,0 +1,31 @@ +import java.util.Scanner; +public class SumOfMultiples { + + + public int Sum(int number, int [] set){ + int sum=0; + int count=0; + for(int i=1; i0){ + sum=sum+i; + count=0; + } + + } + + System.out.println(sum); + return sum; + } + + + +} diff --git a/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java b/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java new file mode 100644 index 000000000..78fcf53d6 --- /dev/null +++ b/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java @@ -0,0 +1,129 @@ +import static org.junit.Assert.*; + +import org.junit.Test; + +public class SumOfMultiplesTest { + + @Test + public void test1() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={3,5}; + int output = mySum.Sum(1,set); + assertEquals(0,output); + + } + @Test + public void test2() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={3,5}; + int output = mySum.Sum(4,set); + assertEquals(3,output); + + } + + + @Test + public void test3() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={3,5}; + int output = mySum.Sum(10,set); + assertEquals(23,output); + + } + + @Test + public void test4() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={3,5}; + int output = mySum.Sum(100,set); + assertEquals(2318,output); + + } + + @Test + public void test5() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={3,5}; + int output = mySum.Sum(1000,set); + assertEquals(233168,output); + + } + + @Test + public void test6() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={7,13,17}; + int output = mySum.Sum(20,set); + assertEquals(51,output); + + } + + @Test + public void test7() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={4,6}; + int output = mySum.Sum(15,set); + assertEquals(30,output); + + } + + @Test + public void test8() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={5,6,8}; + int output = mySum.Sum(150,set); + assertEquals(4419,output); + + } + + @Test + public void test9() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={5,25}; + int output = mySum.Sum(51,set); + assertEquals(275,output); + + } + + @Test + public void test10() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={43,47}; + int output = mySum.Sum(10000,set); + assertEquals(2203160,output); + + } + + @Test + public void test11() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={1}; + int output = mySum.Sum(100,set); + assertEquals(4950,output); + + } + + @Test + public void test12() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={}; + int output = mySum.Sum(10000,set); + assertEquals(0,output); + + } + + + +} From a1cbd0d05fc7bef9d0c9c42e57f65b0b6aa52cf9 Mon Sep 17 00:00:00 2001 From: Fuad Date: Sun, 20 Nov 2016 02:05:23 -0600 Subject: [PATCH 2/8] err test --- .../src/java/SumOfMultiples.java | 31 ----- .../src/test/SumOfMultiplesTest.java | 129 ------------------ 2 files changed, 160 deletions(-) delete mode 100644 exercises/SumOfMultiples/src/java/SumOfMultiples.java delete mode 100644 exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java diff --git a/exercises/SumOfMultiples/src/java/SumOfMultiples.java b/exercises/SumOfMultiples/src/java/SumOfMultiples.java deleted file mode 100644 index 7b2ceb19b..000000000 --- a/exercises/SumOfMultiples/src/java/SumOfMultiples.java +++ /dev/null @@ -1,31 +0,0 @@ -import java.util.Scanner; -public class SumOfMultiples { - - - public int Sum(int number, int [] set){ - int sum=0; - int count=0; - for(int i=1; i0){ - sum=sum+i; - count=0; - } - - } - - System.out.println(sum); - return sum; - } - - - -} diff --git a/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java b/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java deleted file mode 100644 index 78fcf53d6..000000000 --- a/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java +++ /dev/null @@ -1,129 +0,0 @@ -import static org.junit.Assert.*; - -import org.junit.Test; - -public class SumOfMultiplesTest { - - @Test - public void test1() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={3,5}; - int output = mySum.Sum(1,set); - assertEquals(0,output); - - } - @Test - public void test2() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={3,5}; - int output = mySum.Sum(4,set); - assertEquals(3,output); - - } - - - @Test - public void test3() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={3,5}; - int output = mySum.Sum(10,set); - assertEquals(23,output); - - } - - @Test - public void test4() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={3,5}; - int output = mySum.Sum(100,set); - assertEquals(2318,output); - - } - - @Test - public void test5() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={3,5}; - int output = mySum.Sum(1000,set); - assertEquals(233168,output); - - } - - @Test - public void test6() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={7,13,17}; - int output = mySum.Sum(20,set); - assertEquals(51,output); - - } - - @Test - public void test7() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={4,6}; - int output = mySum.Sum(15,set); - assertEquals(30,output); - - } - - @Test - public void test8() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={5,6,8}; - int output = mySum.Sum(150,set); - assertEquals(4419,output); - - } - - @Test - public void test9() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={5,25}; - int output = mySum.Sum(51,set); - assertEquals(275,output); - - } - - @Test - public void test10() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={43,47}; - int output = mySum.Sum(10000,set); - assertEquals(2203160,output); - - } - - @Test - public void test11() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={1}; - int output = mySum.Sum(100,set); - assertEquals(4950,output); - - } - - @Test - public void test12() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={}; - int output = mySum.Sum(10000,set); - assertEquals(0,output); - - } - - - -} From 5920215a64f7f1fc6ed934dcf77e8b0aff5fb6fa Mon Sep 17 00:00:00 2001 From: Fuad Date: Sun, 20 Nov 2016 02:09:10 -0600 Subject: [PATCH 3/8] Sum of Multiples -Solution to the Sum of Multiples problem. -Includes test cases mentioned here: https://github.com/exercism/x-common/blob/master/exercises/sum-of-multip les/canonical-data.json --- exercises/SumOfMultiples/build.gradle | 17 +++ .../src/java/SumOfMultiples.java | 31 +++++ .../src/test/SumOfMultiplesTest.java | 129 ++++++++++++++++++ 3 files changed, 177 insertions(+) create mode 100644 exercises/SumOfMultiples/build.gradle create mode 100644 exercises/SumOfMultiples/src/java/SumOfMultiples.java create mode 100644 exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java diff --git a/exercises/SumOfMultiples/build.gradle b/exercises/SumOfMultiples/build.gradle new file mode 100644 index 000000000..d019b23c7 --- /dev/null +++ b/exercises/SumOfMultiples/build.gradle @@ -0,0 +1,17 @@ +apply plugin: "java" +apply plugin: "eclipse" +apply plugin: "idea" + +repositories { + mavenCentral() +} + +dependencies { + testCompile "junit:junit:4.12" +} +test { + testLogging { + exceptionFormat = 'full' + events = ["passed", "failed", "skipped"] + } +} diff --git a/exercises/SumOfMultiples/src/java/SumOfMultiples.java b/exercises/SumOfMultiples/src/java/SumOfMultiples.java new file mode 100644 index 000000000..7b2ceb19b --- /dev/null +++ b/exercises/SumOfMultiples/src/java/SumOfMultiples.java @@ -0,0 +1,31 @@ +import java.util.Scanner; +public class SumOfMultiples { + + + public int Sum(int number, int [] set){ + int sum=0; + int count=0; + for(int i=1; i0){ + sum=sum+i; + count=0; + } + + } + + System.out.println(sum); + return sum; + } + + + +} diff --git a/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java b/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java new file mode 100644 index 000000000..78fcf53d6 --- /dev/null +++ b/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java @@ -0,0 +1,129 @@ +import static org.junit.Assert.*; + +import org.junit.Test; + +public class SumOfMultiplesTest { + + @Test + public void test1() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={3,5}; + int output = mySum.Sum(1,set); + assertEquals(0,output); + + } + @Test + public void test2() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={3,5}; + int output = mySum.Sum(4,set); + assertEquals(3,output); + + } + + + @Test + public void test3() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={3,5}; + int output = mySum.Sum(10,set); + assertEquals(23,output); + + } + + @Test + public void test4() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={3,5}; + int output = mySum.Sum(100,set); + assertEquals(2318,output); + + } + + @Test + public void test5() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={3,5}; + int output = mySum.Sum(1000,set); + assertEquals(233168,output); + + } + + @Test + public void test6() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={7,13,17}; + int output = mySum.Sum(20,set); + assertEquals(51,output); + + } + + @Test + public void test7() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={4,6}; + int output = mySum.Sum(15,set); + assertEquals(30,output); + + } + + @Test + public void test8() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={5,6,8}; + int output = mySum.Sum(150,set); + assertEquals(4419,output); + + } + + @Test + public void test9() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={5,25}; + int output = mySum.Sum(51,set); + assertEquals(275,output); + + } + + @Test + public void test10() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={43,47}; + int output = mySum.Sum(10000,set); + assertEquals(2203160,output); + + } + + @Test + public void test11() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={1}; + int output = mySum.Sum(100,set); + assertEquals(4950,output); + + } + + @Test + public void test12() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set={}; + int output = mySum.Sum(10000,set); + assertEquals(0,output); + + } + + + +} From 3a4d035429ab71242e873664928d3c8fbc6ed731 Mon Sep 17 00:00:00 2001 From: Fuad Mohamoud Date: Sun, 20 Nov 2016 02:19:20 -0600 Subject: [PATCH 4/8] Trailing Spaces Eliminated extra spaces --- .../src/java/SumOfMultiples.java | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/exercises/SumOfMultiples/src/java/SumOfMultiples.java b/exercises/SumOfMultiples/src/java/SumOfMultiples.java index 7b2ceb19b..6d284d2f0 100644 --- a/exercises/SumOfMultiples/src/java/SumOfMultiples.java +++ b/exercises/SumOfMultiples/src/java/SumOfMultiples.java @@ -1,31 +1,20 @@ import java.util.Scanner; public class SumOfMultiples { - - public int Sum(int number, int [] set){ int sum=0; int count=0; for(int i=1; i0){ sum=sum+i; count=0; - } - - } - + } + } System.out.println(sum); return sum; - } - - - + } } From c6b6388dfc920a1051d97250eddb7e9cad0ac4b0 Mon Sep 17 00:00:00 2001 From: Fuad Mohamoud Date: Sun, 20 Nov 2016 02:22:08 -0600 Subject: [PATCH 5/8] Trailing Spaces Eliminated Trailing Spaces --- .../src/test/SumOfMultiplesTest.java | 45 ++----------------- 1 file changed, 4 insertions(+), 41 deletions(-) diff --git a/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java b/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java index 78fcf53d6..f9b55d360 100644 --- a/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java +++ b/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java @@ -6,124 +6,87 @@ public class SumOfMultiplesTest { @Test public void test1() { - SumOfMultiples mySum = new SumOfMultiples(); int[] set={3,5}; int output = mySum.Sum(1,set); - assertEquals(0,output); - + assertEquals(0,output); } @Test public void test2() { - SumOfMultiples mySum = new SumOfMultiples(); int[] set={3,5}; int output = mySum.Sum(4,set); assertEquals(3,output); - } - - @Test public void test3() { - SumOfMultiples mySum = new SumOfMultiples(); int[] set={3,5}; int output = mySum.Sum(10,set); - assertEquals(23,output); - + assertEquals(23,output); } - @Test public void test4() { - SumOfMultiples mySum = new SumOfMultiples(); int[] set={3,5}; int output = mySum.Sum(100,set); assertEquals(2318,output); - } - @Test public void test5() { - SumOfMultiples mySum = new SumOfMultiples(); int[] set={3,5}; int output = mySum.Sum(1000,set); assertEquals(233168,output); - } - @Test public void test6() { - SumOfMultiples mySum = new SumOfMultiples(); int[] set={7,13,17}; int output = mySum.Sum(20,set); assertEquals(51,output); - } - @Test public void test7() { - SumOfMultiples mySum = new SumOfMultiples(); int[] set={4,6}; int output = mySum.Sum(15,set); assertEquals(30,output); - } - @Test public void test8() { - SumOfMultiples mySum = new SumOfMultiples(); int[] set={5,6,8}; int output = mySum.Sum(150,set); assertEquals(4419,output); - } @Test public void test9() { - SumOfMultiples mySum = new SumOfMultiples(); int[] set={5,25}; int output = mySum.Sum(51,set); assertEquals(275,output); - } - @Test public void test10() { - SumOfMultiples mySum = new SumOfMultiples(); int[] set={43,47}; int output = mySum.Sum(10000,set); assertEquals(2203160,output); - } - @Test public void test11() { - SumOfMultiples mySum = new SumOfMultiples(); int[] set={1}; int output = mySum.Sum(100,set); - assertEquals(4950,output); - + assertEquals(4950,output); } - @Test - public void test12() { - + public void test12() { SumOfMultiples mySum = new SumOfMultiples(); int[] set={}; int output = mySum.Sum(10000,set); assertEquals(0,output); - } - - - } From 37ff0e663fe0e7b0f087c2e55893824f4de13853 Mon Sep 17 00:00:00 2001 From: Fuad Date: Mon, 21 Nov 2016 03:37:44 -0600 Subject: [PATCH 6/8] Modified Solution to Pull #179 - Fixed my weird white spacing - Added a blank file for implementation - Added @Ignore after First Test Case, I thought that would be good practice - Removed unused library util.Scanner from my first implementation - Removed print statement -Added Exercise to the config.json File --- config.json | 6 ++ .../src/example/SumOfMultiples.java | 27 ++++++ .../src/java/SumOfMultiples.java | 20 +--- .../src/test/SumOfMultiplesTest.java | 91 ++++++++++++++++--- 4 files changed, 111 insertions(+), 33 deletions(-) create mode 100644 exercises/SumOfMultiples/src/example/SumOfMultiples.java diff --git a/config.json b/config.json index ea6c12b06..2f7f51226 100644 --- a/config.json +++ b/config.json @@ -39,6 +39,7 @@ "luhn", "pig-latin", "simple-linked-list", + "sum-of-multiples", "linked-list", "nth-prime", "pascals-triangle", @@ -223,6 +224,11 @@ "difficulty": 1, "topics": [] }, + { + "slug": "sum-of-multiples", + "difficulty": 1, + "topics": [] + }, { "slug": "linked-list", "difficulty": 1, diff --git a/exercises/SumOfMultiples/src/example/SumOfMultiples.java b/exercises/SumOfMultiples/src/example/SumOfMultiples.java new file mode 100644 index 000000000..d7b4f29c9 --- /dev/null +++ b/exercises/SumOfMultiples/src/example/SumOfMultiples.java @@ -0,0 +1,27 @@ +import java.util.Arrays; +public class SumOfMultiples { + + + public int Sum(int number, int [] set){ + + int sum=0; + int count=0; + + for(int i=1; i0){ + sum=sum+i; + count=0; + } + } + + return sum; + } + +} diff --git a/exercises/SumOfMultiples/src/java/SumOfMultiples.java b/exercises/SumOfMultiples/src/java/SumOfMultiples.java index 6d284d2f0..2403e011d 100644 --- a/exercises/SumOfMultiples/src/java/SumOfMultiples.java +++ b/exercises/SumOfMultiples/src/java/SumOfMultiples.java @@ -1,20 +1,4 @@ -import java.util.Scanner; +import java.util.Arrays; public class SumOfMultiples { - public int Sum(int number, int [] set){ - int sum=0; - int count=0; - for(int i=1; i0){ - sum=sum+i; - count=0; - } - } - System.out.println(sum); - return sum; - } + } diff --git a/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java b/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java index f9b55d360..a759c61ff 100644 --- a/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java +++ b/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java @@ -1,92 +1,153 @@ import static org.junit.Assert.*; +import org.junit.Ignore; import org.junit.Test; public class SumOfMultiplesTest { + @Test - public void test1() { + public void testSumOfMultiplesInputOne() { + SumOfMultiples mySum = new SumOfMultiples(); int[] set={3,5}; int output = mySum.Sum(1,set); - assertEquals(0,output); + assertEquals(0,output); + } + + @Test - public void test2() { + @Ignore + public void testSumOfMultiplesInputFour() { + SumOfMultiples mySum = new SumOfMultiples(); int[] set={3,5}; int output = mySum.Sum(4,set); assertEquals(3,output); + } + + @Test - public void test3() { + @Ignore + public void testSumOfMultiplesInputTen() { + SumOfMultiples mySum = new SumOfMultiples(); int[] set={3,5}; int output = mySum.Sum(10,set); - assertEquals(23,output); + assertEquals(23,output); + } + + @Test - public void test4() { + @Ignore + public void testSumOfMultiplesInputOneHundred() { + SumOfMultiples mySum = new SumOfMultiples(); int[] set={3,5}; int output = mySum.Sum(100,set); assertEquals(2318,output); + } + + @Test - public void test5() { + @Ignore + public void testSumOfMultiplesInputOneThousand() { + SumOfMultiples mySum = new SumOfMultiples(); int[] set={3,5}; int output = mySum.Sum(1000,set); assertEquals(233168,output); + } + + @Test - public void test6() { + @Ignore + public void testSumOfMultiplesInputTwenty() { + SumOfMultiples mySum = new SumOfMultiples(); int[] set={7,13,17}; int output = mySum.Sum(20,set); assertEquals(51,output); + } + + @Test - public void test7() { + @Ignore + public void testSumOfMultiplesInputThirty() { + SumOfMultiples mySum = new SumOfMultiples(); int[] set={4,6}; int output = mySum.Sum(15,set); assertEquals(30,output); + } + + @Test - public void test8() { + @Ignore + public void testSumOfMultiplesInputOneHundredFifty() { + SumOfMultiples mySum = new SumOfMultiples(); int[] set={5,6,8}; int output = mySum.Sum(150,set); assertEquals(4419,output); + } + @Test - public void test9() { + @Ignore + public void testSumOfMultiplesInputFiftyOne() { + SumOfMultiples mySum = new SumOfMultiples(); int[] set={5,25}; int output = mySum.Sum(51,set); assertEquals(275,output); + } + + @Test - public void test10() { + @Ignore + public void testSumOfMultiplesInputTenThousand() { + SumOfMultiples mySum = new SumOfMultiples(); int[] set={43,47}; int output = mySum.Sum(10000,set); assertEquals(2203160,output); + } + + @Test - public void test11() { + @Ignore + public void testSumOfMultiplesInputOneNumberArray() { + SumOfMultiples mySum = new SumOfMultiples(); int[] set={1}; int output = mySum.Sum(100,set); - assertEquals(4950,output); + assertEquals(4950,output); + } + + @Test - public void test12() { + @Ignore + public void testSumOfMultiplesEmptyArray() { + SumOfMultiples mySum = new SumOfMultiples(); int[] set={}; int output = mySum.Sum(10000,set); assertEquals(0,output); + } + + + } From eebb41ef5fcdd6f59484c4d0153ed6804dbb866c Mon Sep 17 00:00:00 2001 From: Fuad Date: Mon, 21 Nov 2016 10:40:00 -0600 Subject: [PATCH 7/8] Updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Fixed White space by copy pasting code and clicking Beautify on this site: http://codebeautify.org/javaviewer -Modified names for Test Cases as suggested—> now includes numbers being tested along with max number in method call. --- .../src/example/SumOfMultiples.java | 48 +-- .../src/java/SumOfMultiples.java | 2 +- .../src/test/SumOfMultiplesTest.java | 326 ++++++++++-------- 3 files changed, 205 insertions(+), 171 deletions(-) diff --git a/exercises/SumOfMultiples/src/example/SumOfMultiples.java b/exercises/SumOfMultiples/src/example/SumOfMultiples.java index d7b4f29c9..e1af00b6f 100644 --- a/exercises/SumOfMultiples/src/example/SumOfMultiples.java +++ b/exercises/SumOfMultiples/src/example/SumOfMultiples.java @@ -1,27 +1,27 @@ import java.util.Arrays; public class SumOfMultiples { - - - public int Sum(int number, int [] set){ - - int sum=0; - int count=0; - - for(int i=1; i0){ - sum=sum+i; - count=0; - } - } - - return sum; - } - + + + public int Sum(int number, int[] set) { + + int sum = 0; + int count = 0; + + for (int i = 1; i < number; i++) { + + for (int j = 0; j < set.length; j++) { + if (i % set[j] == 0) { + count++; + } + } + + if (count > 0) { + sum = sum + i; + count = 0; + } + } + + return sum; + } + } diff --git a/exercises/SumOfMultiples/src/java/SumOfMultiples.java b/exercises/SumOfMultiples/src/java/SumOfMultiples.java index 2403e011d..a5d78aa20 100644 --- a/exercises/SumOfMultiples/src/java/SumOfMultiples.java +++ b/exercises/SumOfMultiples/src/java/SumOfMultiples.java @@ -1,4 +1,4 @@ import java.util.Arrays; public class SumOfMultiples { - + } diff --git a/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java b/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java index a759c61ff..95e4f16e4 100644 --- a/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java +++ b/exercises/SumOfMultiples/src/test/SumOfMultiplesTest.java @@ -4,150 +4,184 @@ import org.junit.Test; public class SumOfMultiplesTest { - - - @Test - public void testSumOfMultiplesInputOne() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={3,5}; - int output = mySum.Sum(1,set); - assertEquals(0,output); - - } - - - @Test - @Ignore - public void testSumOfMultiplesInputFour() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={3,5}; - int output = mySum.Sum(4,set); - assertEquals(3,output); - - } - - - @Test - @Ignore - public void testSumOfMultiplesInputTen() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={3,5}; - int output = mySum.Sum(10,set); - assertEquals(23,output); - - } - - - @Test - @Ignore - public void testSumOfMultiplesInputOneHundred() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={3,5}; - int output = mySum.Sum(100,set); - assertEquals(2318,output); - - } - - - @Test - @Ignore - public void testSumOfMultiplesInputOneThousand() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={3,5}; - int output = mySum.Sum(1000,set); - assertEquals(233168,output); - - } - - - @Test - @Ignore - public void testSumOfMultiplesInputTwenty() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={7,13,17}; - int output = mySum.Sum(20,set); - assertEquals(51,output); - - } - - - @Test - @Ignore - public void testSumOfMultiplesInputThirty() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={4,6}; - int output = mySum.Sum(15,set); - assertEquals(30,output); - - } - - - @Test - @Ignore - public void testSumOfMultiplesInputOneHundredFifty() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={5,6,8}; - int output = mySum.Sum(150,set); - assertEquals(4419,output); - - } - - - @Test - @Ignore - public void testSumOfMultiplesInputFiftyOne() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={5,25}; - int output = mySum.Sum(51,set); - assertEquals(275,output); - - } - - - @Test - @Ignore - public void testSumOfMultiplesInputTenThousand() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={43,47}; - int output = mySum.Sum(10000,set); - assertEquals(2203160,output); - - } - - - @Test - @Ignore - public void testSumOfMultiplesInputOneNumberArray() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={1}; - int output = mySum.Sum(100,set); - assertEquals(4950,output); - - } - - - @Test - @Ignore - public void testSumOfMultiplesEmptyArray() { - - SumOfMultiples mySum = new SumOfMultiples(); - int[] set={}; - int output = mySum.Sum(10000,set); - assertEquals(0,output); - - } - - - + + + @Test + public void testSumOfMultiplesOf3and4UpToOne() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set = { + 3, + 5 + }; + int output = mySum.Sum(1, set); + assertEquals(0, output); + + } + + + @Test + @Ignore + public void testSumOfMultiplesOf3and5UpToFour() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set = { + 3, + 5 + }; + int output = mySum.Sum(4, set); + assertEquals(3, output); + + } + + + @Test + @Ignore + public void testSumOfMultiplesOf3and5UpToTen() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set = { + 3, + 5 + }; + int output = mySum.Sum(10, set); + assertEquals(23, output); + + } + + + @Test + @Ignore + public void testSumOfMultiplesOf3and5UpToOneHundred() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set = { + 3, + 5 + }; + int output = mySum.Sum(100, set); + assertEquals(2318, output); + + } + + + @Test + @Ignore + public void testSumOfMultiplesOf3and5UpToOneThousand() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set = { + 3, + 5 + }; + int output = mySum.Sum(1000, set); + assertEquals(233168, output); + + } + + + @Test + @Ignore + public void testSumOfMultiplesOf7and13and17UpToTwenty() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set = { + 7, + 13, + 17 + }; + int output = mySum.Sum(20, set); + assertEquals(51, output); + + } + + + @Test + @Ignore + public void testSumOfMultiplesOf4and6UpToFifteen() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set = { + 4, + 6 + }; + int output = mySum.Sum(15, set); + assertEquals(30, output); + + } + + + @Test + @Ignore + public void testSumOfMultiplesOf5and6and8UpToOneHundredFifty() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set = { + 5, + 6, + 8 + }; + int output = mySum.Sum(150, set); + assertEquals(4419, output); + + } + + + @Test + @Ignore + public void testSumOfMultiplesOf5and25UpToTwoHundredSeventyFive() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set = { + 5, + 25 + }; + int output = mySum.Sum(51, set); + assertEquals(275, output); + + } + + + @Test + @Ignore + public void testSumOfMultiplesOf43and47UpToTenThousand() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set = { + 43, + 47 + }; + int output = mySum.Sum(10000, set); + assertEquals(2203160, output); + + } + + + @Test + @Ignore + public void testSumOfMultiplesOfOneUpToOneHundred() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set = { + 1 + }; + int output = mySum.Sum(100, set); + assertEquals(4950, output); + + } + + + @Test + @Ignore + public void testSumOfMultiplesOfNoneUpToTenThousand() { + + SumOfMultiples mySum = new SumOfMultiples(); + int[] set = {}; + int output = mySum.Sum(10000, set); + assertEquals(0, output); + + } + + + } From 78af6bbc1440225b1692c376140b328897824989 Mon Sep 17 00:00:00 2001 From: Stuart Kent Date: Sun, 13 Nov 2016 22:19:46 -0500 Subject: [PATCH 8/8] minesweeper: add to track --- config.json | 8 +- exercises/minesweeper/build.gradle | 17 + .../src/example/java/MinesweeperBoard.java | 111 +++++++ .../src/main/java/MinesweeperBoard.java | 5 + .../src/test/java/MinesweeperBoardTest.java | 295 ++++++++++++++++++ exercises/settings.gradle | 1 + 6 files changed, 436 insertions(+), 1 deletion(-) create mode 100644 exercises/minesweeper/build.gradle create mode 100644 exercises/minesweeper/src/example/java/MinesweeperBoard.java create mode 100644 exercises/minesweeper/src/main/java/MinesweeperBoard.java create mode 100644 exercises/minesweeper/src/test/java/MinesweeperBoardTest.java diff --git a/config.json b/config.json index 2f7f51226..0ba5af4a8 100644 --- a/config.json +++ b/config.json @@ -46,7 +46,8 @@ "beer-song", "difference-of-squares", "largest-series-product", - "queen-attack" + "queen-attack", + "minesweeper" ], "exercises": [ { @@ -263,6 +264,11 @@ "slug": "queen-attack", "difficulty": 1, "topics": [] + }, + { + "slug": "minesweeper", + "difficulty": 1, + "topics": [] } ], "deprecated": [ diff --git a/exercises/minesweeper/build.gradle b/exercises/minesweeper/build.gradle new file mode 100644 index 000000000..d019b23c7 --- /dev/null +++ b/exercises/minesweeper/build.gradle @@ -0,0 +1,17 @@ +apply plugin: "java" +apply plugin: "eclipse" +apply plugin: "idea" + +repositories { + mavenCentral() +} + +dependencies { + testCompile "junit:junit:4.12" +} +test { + testLogging { + exceptionFormat = 'full' + events = ["passed", "failed", "skipped"] + } +} diff --git a/exercises/minesweeper/src/example/java/MinesweeperBoard.java b/exercises/minesweeper/src/example/java/MinesweeperBoard.java new file mode 100644 index 000000000..4485f97c1 --- /dev/null +++ b/exercises/minesweeper/src/example/java/MinesweeperBoard.java @@ -0,0 +1,111 @@ +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +final class MinesweeperBoard { + + private static final char MINE_CHAR = '*'; + + private static final char SPACE_CHAR = ' '; + + private final List rawRepresentation; + + private final int numberOfRows; + + private final int numberOfColumns; + + MinesweeperBoard(final List rawRepresentation) { + validateInputBoard(rawRepresentation); + this.rawRepresentation = rawRepresentation; + this.numberOfRows = rawRepresentation.size(); + this.numberOfColumns = rawRepresentation.isEmpty() ? 0 : rawRepresentation.get(0).length(); + } + + List getAnnotatedRepresentation() throws IllegalArgumentException { + final List result = new ArrayList<>(); + + for (int rowNumber = 0; rowNumber < numberOfRows; rowNumber++) { + result.add(getAnnotatedRow(rowNumber)); + } + + return result; + } + + private String getAnnotatedRow(final int rowNumber) { + String result = ""; + + for (int columnNumber = 0; columnNumber < numberOfColumns; columnNumber++) { + result += getCellAnnotation(rowNumber, columnNumber); + } + + return result; + } + + private char getCellAnnotation(final int rowNumber, final int columnNumber) { + // If (rowNumber, columnNumber) is a mine, we're done. + if (rawRepresentation.get(rowNumber).charAt(columnNumber) == MINE_CHAR) { + return MINE_CHAR; + } + + final int mineCount = computeMineCountAround(rowNumber, columnNumber); + + // If computed count is positive, add it to the annotated row. Otherwise, add a blank space. + return mineCount > 0 ? Character.forDigit(mineCount, 10) : SPACE_CHAR; + } + + private int computeMineCountAround(final int rowNumber, final int columnNumber) { + int result = 0; + + // Compute row and column ranges to inspect (respecting board edges). + final int minRowToInspect = Math.max(rowNumber - 1, 0); + final int maxRowToInspect = Math.min(rowNumber + 1, numberOfRows - 1); + final int minColToInspect = Math.max(columnNumber - 1, 0); + final int maxColToInspect = Math.min(columnNumber + 1, numberOfColumns - 1); + + // Count mines in the cells surrounding (row, col). + for (int rowToInspect = minRowToInspect; rowToInspect <= maxRowToInspect; rowToInspect++) { + for (int colToInspect = minColToInspect; colToInspect <= maxColToInspect; colToInspect++) { + if (rawRepresentation.get(rowToInspect).charAt(colToInspect) == MINE_CHAR) { + result += 1; + } + } + } + + return result; + } + + private void validateInputBoard(final List inputBoard) throws IllegalArgumentException { + validateInputBoardIsNotNull(inputBoard); + + if (inputBoard.isEmpty()) { + return; + } + + validateInputBoardCharacters(inputBoard); + validateInputBoardColumnCounts(inputBoard); + } + + private void validateInputBoardIsNotNull(final List inputBoard) throws IllegalArgumentException { + if (inputBoard == null) { + throw new IllegalArgumentException("Input board may not be null."); + } + } + + private void validateInputBoardCharacters(final List inputBoard) throws IllegalArgumentException { + final String allBoardCharacters = String.join("", inputBoard); + + if (!allBoardCharacters.matches("^[ *]*$")) { + throw new IllegalArgumentException("Input board can only contain the characters ' ' and '*'."); + } + } + + private void validateInputBoardColumnCounts(final List inputBoard) throws IllegalArgumentException { + final Set setOfColumnCounts = inputBoard.stream().map(String::length).collect(Collectors.toSet()); + + if (setOfColumnCounts.size() > 1) { + throw new IllegalArgumentException("Input board rows must all have the same number of columns."); + } + } + +} diff --git a/exercises/minesweeper/src/main/java/MinesweeperBoard.java b/exercises/minesweeper/src/main/java/MinesweeperBoard.java new file mode 100644 index 000000000..a30ae73b9 --- /dev/null +++ b/exercises/minesweeper/src/main/java/MinesweeperBoard.java @@ -0,0 +1,5 @@ +public final class MinesweeperBoard { + + + +} diff --git a/exercises/minesweeper/src/test/java/MinesweeperBoardTest.java b/exercises/minesweeper/src/test/java/MinesweeperBoardTest.java new file mode 100644 index 000000000..36b69f2e5 --- /dev/null +++ b/exercises/minesweeper/src/test/java/MinesweeperBoardTest.java @@ -0,0 +1,295 @@ +import org.junit.Ignore; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +public final class MinesweeperBoardTest { + + /* + * See https://github.com/junit-team/junit4/wiki/Rules for information on JUnit Rules in general and + * ExpectedExceptions in particular. + */ + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + @Test + public void testInputBoardWithNoRowsAndNoColumns() { + final List inputBoard = Collections.emptyList(); + final List expectedAnnotatedRepresentation = Collections.emptyList(); + final List actualAnnotatedRepresentation + = new MinesweeperBoard(inputBoard).getAnnotatedRepresentation(); + + assertEquals(expectedAnnotatedRepresentation, actualAnnotatedRepresentation); + } + + @Ignore + @Test + public void testInputBoardWithOneRowAndNoColumns() { + final List inputBoard = Collections.singletonList(""); + final List expectedAnnotatedRepresentation = Collections.singletonList(""); + final List actualAnnotatedRepresentation + = new MinesweeperBoard(inputBoard).getAnnotatedRepresentation(); + + assertEquals(expectedAnnotatedRepresentation, actualAnnotatedRepresentation); + } + + @Ignore + @Test + public void testInputBoardWithNoMines() { + final List inputBoard = Arrays.asList( + " ", + " ", + " " + ); + + final List expectedAnnotatedRepresentation = Arrays.asList( + " ", + " ", + " " + ); + + final List actualAnnotatedRepresentation + = new MinesweeperBoard(inputBoard).getAnnotatedRepresentation(); + + assertEquals(expectedAnnotatedRepresentation, actualAnnotatedRepresentation); + } + + @Ignore + @Test + public void testInputBoardWithOnlyMines() { + final List inputBoard = Arrays.asList( + "***", + "***", + "***" + ); + + final List expectedAnnotatedRepresentation = Arrays.asList( + "***", + "***", + "***" + ); + + final List actualAnnotatedRepresentation + = new MinesweeperBoard(inputBoard).getAnnotatedRepresentation(); + + assertEquals(expectedAnnotatedRepresentation, actualAnnotatedRepresentation); + } + + @Ignore + @Test + public void testInputBoardWithSingleMineAtCenter() { + final List inputBoard = Arrays.asList( + " ", + " * ", + " " + ); + + final List expectedAnnotatedRepresentation = Arrays.asList( + "111", + "1*1", + "111" + ); + + final List actualAnnotatedRepresentation + = new MinesweeperBoard(inputBoard).getAnnotatedRepresentation(); + + assertEquals(expectedAnnotatedRepresentation, actualAnnotatedRepresentation); + } + + @Ignore + @Test + public void testInputBoardWithMinesAroundPerimeter() { + final List inputBoard = Arrays.asList( + "***", + "* *", + "***" + ); + + final List expectedAnnotatedRepresentation = Arrays.asList( + "***", + "*8*", + "***" + ); + + final List actualAnnotatedRepresentation + = new MinesweeperBoard(inputBoard).getAnnotatedRepresentation(); + + assertEquals(expectedAnnotatedRepresentation, actualAnnotatedRepresentation); + } + + @Ignore + @Test + public void testInputBoardWithSingleRowAndTwoMines() { + final List inputBoard = Collections.singletonList( + " * * " + ); + + final List expectedAnnotatedRepresentation = Collections.singletonList( + "1*2*1" + ); + + final List actualAnnotatedRepresentation + = new MinesweeperBoard(inputBoard).getAnnotatedRepresentation(); + + assertEquals(expectedAnnotatedRepresentation, actualAnnotatedRepresentation); + } + + @Ignore + @Test + public void testInputBoardWithSingleRowAndTwoMinesAtEdges() { + final List inputBoard = Collections.singletonList( + "* *" + ); + + final List expectedAnnotatedRepresentation = Collections.singletonList( + "*1 1*" + ); + + final List actualAnnotatedRepresentation + = new MinesweeperBoard(inputBoard).getAnnotatedRepresentation(); + + assertEquals(expectedAnnotatedRepresentation, actualAnnotatedRepresentation); + } + + @Ignore + @Test + public void testInputBoardWithSingleColumnAndTwoMines() { + final List inputBoard = Arrays.asList( + " ", + "*", + " ", + "*", + " " + ); + + final List expectedAnnotatedRepresentation = Arrays.asList( + "1", + "*", + "2", + "*", + "1" + ); + + final List actualAnnotatedRepresentation + = new MinesweeperBoard(inputBoard).getAnnotatedRepresentation(); + + assertEquals(expectedAnnotatedRepresentation, actualAnnotatedRepresentation); + } + + @Ignore + @Test + public void testInputBoardWithSingleColumnAndTwoMinesAtEdges() { + final List inputBoard = Arrays.asList( + "*", + " ", + " ", + " ", + "*" + ); + + final List expectedAnnotatedRepresentation = Arrays.asList( + "*", + "1", + " ", + "1", + "*" + ); + + final List actualAnnotatedRepresentation + = new MinesweeperBoard(inputBoard).getAnnotatedRepresentation(); + + assertEquals(expectedAnnotatedRepresentation, actualAnnotatedRepresentation); + } + + @Ignore + @Test + public void testInputBoardWithMinesInCross() { + final List inputBoard = Arrays.asList( + " * ", + " * ", + "*****", + " * ", + " * " + ); + + final List expectedAnnotatedRepresentation = Arrays.asList( + " 2*2 ", + "25*52", + "*****", + "25*52", + " 2*2 " + ); + + final List actualAnnotatedRepresentation + = new MinesweeperBoard(inputBoard).getAnnotatedRepresentation(); + + assertEquals(expectedAnnotatedRepresentation, actualAnnotatedRepresentation); + } + + @Ignore + @Test + public void testLargeInputBoard() { + final List inputBoard = Arrays.asList( + " * * ", + " * ", + " * ", + " * *", + " * * ", + " " + ); + + final List expectedAnnotatedRepresentation = Arrays.asList( + "1*22*1", + "12*322", + " 123*2", + "112*4*", + "1*22*2", + "111111" + ); + + final List actualAnnotatedRepresentation + = new MinesweeperBoard(inputBoard).getAnnotatedRepresentation(); + + assertEquals(expectedAnnotatedRepresentation, actualAnnotatedRepresentation); + } + + @Ignore + @Test + public void testNullInputBoardIsRejected() { + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("Input board may not be null."); + + new MinesweeperBoard(null); + } + + @Ignore + @Test + public void testInputBoardWithInvalidSymbolsIsRejected() { + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("Input board can only contain the characters ' ' and '*'."); + + new MinesweeperBoard(Collections.singletonList(" * & ")); + } + + @Ignore + @Test + public void testInputBoardWithInconsistentRowLengthsIsRejected() { + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("Input board rows must all have the same number of columns."); + + new MinesweeperBoard(Arrays.asList( + "*", + "**", + "* *", + "* *", + "* *" + )); + } + +} diff --git a/exercises/settings.gradle b/exercises/settings.gradle index 1af60fb28..e0a4eff39 100644 --- a/exercises/settings.gradle +++ b/exercises/settings.gradle @@ -17,6 +17,7 @@ include 'hello-world' include 'largest-series-product' include 'linked-list' include 'luhn' +include 'minesweeper' include 'meetup' include 'nth-prime' include 'nucleotide-count'