From 9164a0888c39cfe78cb5e7108f98db997bc01bae Mon Sep 17 00:00:00 2001 From: Fauchart Bastien Date: Fri, 17 Feb 2017 15:51:26 +0100 Subject: [PATCH 1/6] dibs: I will implement exercise isogram From d2f7e16324c90bfe922f8f60eee911acf4f35644 Mon Sep 17 00:00:00 2001 From: Bastien FAUCHART Date: Fri, 3 Mar 2017 16:38:48 +0100 Subject: [PATCH 2/6] isogram: add to track --- config.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config.json b/config.json index 0c975057a..4c59d33ed 100644 --- a/config.json +++ b/config.json @@ -63,6 +63,7 @@ "secret-handshake", "flatten-array", "perfect-numbers" + "isogram" ], "exercises": [ { @@ -359,6 +360,11 @@ "slug": "perfect-numbers", "difficulty": 1, "topics": [] + }, + { + "slug": "isogram", + "difficulty": 1, + "topics": [] } ], "deprecated": [ From a7d8b4a183d0669d58d4d8b8bc7685eed556beec Mon Sep 17 00:00:00 2001 From: Fauchart Bastien Date: Fri, 3 Mar 2017 16:41:45 +0100 Subject: [PATCH 3/6] isogram: add to track --- .Rhistory | 0 config.json | 7 +++ exercises/isogram/build.gradle | 17 ++++++ .../isogram/src/example/java/Isogram.java | 29 +++++++++ exercises/isogram/src/main/java/.keep | 0 .../isogram/src/test/java/IsogramTest.java | 59 +++++++++++++++++++ exercises/settings.gradle | 1 + 7 files changed, 113 insertions(+) create mode 100644 .Rhistory create mode 100644 exercises/isogram/build.gradle create mode 100644 exercises/isogram/src/example/java/Isogram.java create mode 100644 exercises/isogram/src/main/java/.keep create mode 100644 exercises/isogram/src/test/java/IsogramTest.java diff --git a/.Rhistory b/.Rhistory new file mode 100644 index 000000000..e69de29bb diff --git a/config.json b/config.json index 0c975057a..abda643bd 100644 --- a/config.json +++ b/config.json @@ -63,6 +63,7 @@ "secret-handshake", "flatten-array", "perfect-numbers" + "isogram" ], "exercises": [ { @@ -359,6 +360,11 @@ "slug": "perfect-numbers", "difficulty": 1, "topics": [] + }, + { + "slug": "isogram", + "difficulty": 1, + "topics": [] } ], "deprecated": [ @@ -381,3 +387,4 @@ "say" ] } + diff --git a/exercises/isogram/build.gradle b/exercises/isogram/build.gradle new file mode 100644 index 000000000..d019b23c7 --- /dev/null +++ b/exercises/isogram/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/isogram/src/example/java/Isogram.java b/exercises/isogram/src/example/java/Isogram.java new file mode 100644 index 000000000..8450b4972 --- /dev/null +++ b/exercises/isogram/src/example/java/Isogram.java @@ -0,0 +1,29 @@ +package exemple; + +import java.util.HashSet; +import java.util.Set; + +public class Isogram { + + public static boolean isIsogram(String word){ + + Set charset= new HashSet(); + String[] words = word.split(" "); + String newword = concat(words); + words = newword.split("-"); + newword = concat(words).toLowerCase(); + + for(int i = 0; i < newword.length(); i++) + charset.add(newword.charAt(i)); + + return charset.size() == newword.length(); + } + + public static String concat(String[] words){ + String newword = new String(""); + for(int i = 0; i < words.length; i++) + newword = newword + words[i]; + return newword; + } + +} diff --git a/exercises/isogram/src/main/java/.keep b/exercises/isogram/src/main/java/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/exercises/isogram/src/test/java/IsogramTest.java b/exercises/isogram/src/test/java/IsogramTest.java new file mode 100644 index 000000000..68063f37f --- /dev/null +++ b/exercises/isogram/src/test/java/IsogramTest.java @@ -0,0 +1,59 @@ +package test; + +import static org.junit.Assert.*; +import org.junit.Test; +import exemple.Isogram; + +public class IsogramTest { + + @Test + public void testIsogram() { + assertTrue(Isogram.isIsogram("duplicates")); + } + + @Test + public void testNotIsogram() { + assertFalse(Isogram.isIsogram("eleven")); + } + + @Test + public void testMediumLongIsogram() { + assertTrue(Isogram.isIsogram("subdermatoglyphic")); + } + + @Test + public void testCaseInsensitive() { + assertFalse(Isogram.isIsogram("Alphabet")); + } + + @Test + public void testIsogramWithHyphen() { + assertTrue(Isogram.isIsogram("thumbscrew-japingly")); + } + + @Test + public void testIgnoresMultipleHyphens() { + assertTrue(Isogram.isIsogram("Hjelmqvist-Gryb-Zock-Pfund-Wax")); + } + + @Test + public void testWorksWithGermanLetters() { + assertTrue(Isogram.isIsogram("Heizölrückstoßabdämpfung")); + } + + @Test + public void testIgnoresSpaces() { + assertFalse(Isogram.isIsogram("the quick brown fox")); + } + + @Test + public void testIgnoresSpaces2() { + assertTrue(Isogram.isIsogram("Emily Jung Schwartzkopf")); + } + + @Test + public void testDuplicateAccentedLetters() { + assertFalse(Isogram.isIsogram("éléphant")); + } + +} diff --git a/exercises/settings.gradle b/exercises/settings.gradle index 76f89c7e3..f08d0070e 100644 --- a/exercises/settings.gradle +++ b/exercises/settings.gradle @@ -22,6 +22,7 @@ include 'grade-school' include 'hamming' include 'hexadecimal' include 'hello-world' +include 'isogram' include 'largest-series-product' include 'linked-list' include 'luhn' From 8c056369a149d53c71e646db0e47a4f8a46fec47 Mon Sep 17 00:00:00 2001 From: Fauchart Bastien Date: Fri, 10 Mar 2017 14:06:29 +0100 Subject: [PATCH 4/6] improve Isogram implementation --- .../isogram/src/example/java/Isogram.java | 26 ++++++++++--------- .../isogram/src/test/java/IsogramTest.java | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/exercises/isogram/src/example/java/Isogram.java b/exercises/isogram/src/example/java/Isogram.java index 8450b4972..4c896723d 100644 --- a/exercises/isogram/src/example/java/Isogram.java +++ b/exercises/isogram/src/example/java/Isogram.java @@ -1,29 +1,31 @@ -package exemple; +package main; import java.util.HashSet; import java.util.Set; +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.joining; public class Isogram { public static boolean isIsogram(String word){ - Set charset= new HashSet(); + Set charset = new HashSet<>(); + String[] words = word.split(" "); - String newword = concat(words); - words = newword.split("-"); - newword = concat(words).toLowerCase(); + String newWord = concat(words); + + words = newWord.split("-"); + newWord = concat(words).toLowerCase(); - for(int i = 0; i < newword.length(); i++) - charset.add(newword.charAt(i)); + for(int i = 0; i < newWord.length(); i++){ + charset.add(newWord.charAt(i)); + } - return charset.size() == newword.length(); + return charset.size() == newWord.length(); } public static String concat(String[] words){ - String newword = new String(""); - for(int i = 0; i < words.length; i++) - newword = newword + words[i]; - return newword; + return stream(words).collect(joining()); } } diff --git a/exercises/isogram/src/test/java/IsogramTest.java b/exercises/isogram/src/test/java/IsogramTest.java index 68063f37f..b754a7a7f 100644 --- a/exercises/isogram/src/test/java/IsogramTest.java +++ b/exercises/isogram/src/test/java/IsogramTest.java @@ -2,7 +2,7 @@ import static org.junit.Assert.*; import org.junit.Test; -import exemple.Isogram; +import main.Isogram; public class IsogramTest { From 4726b05ef10371296b313255079ea8ae9e4f595c Mon Sep 17 00:00:00 2001 From: Fauchart Bastien Date: Thu, 16 Mar 2017 10:54:45 +0100 Subject: [PATCH 5/6] Isogram: adjust API to use instance methods --- .../isogram/src/example/java/Isogram.java | 20 ++++++++---- .../isogram/src/test/java/IsogramTest.java | 32 ++++++++++++------- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/exercises/isogram/src/example/java/Isogram.java b/exercises/isogram/src/example/java/Isogram.java index 4c896723d..fc937f688 100644 --- a/exercises/isogram/src/example/java/Isogram.java +++ b/exercises/isogram/src/example/java/Isogram.java @@ -1,4 +1,4 @@ -package main; +package exemple; import java.util.HashSet; import java.util.Set; @@ -7,24 +7,30 @@ public class Isogram { - public static boolean isIsogram(String word){ + private String word; + + public Isogram(String word){ + this.word = word; + } + + public boolean isogramChecker(){ - Set charset = new HashSet<>(); + Set charSet = new HashSet<>(); - String[] words = word.split(" "); + String[] words = this.word.split(" "); String newWord = concat(words); words = newWord.split("-"); newWord = concat(words).toLowerCase(); for(int i = 0; i < newWord.length(); i++){ - charset.add(newWord.charAt(i)); + charSet.add(newWord.charAt(i)); } - return charset.size() == newWord.length(); + return charSet.size() == newWord.length(); } - public static String concat(String[] words){ + private String concat(String[] words){ return stream(words).collect(joining()); } diff --git a/exercises/isogram/src/test/java/IsogramTest.java b/exercises/isogram/src/test/java/IsogramTest.java index b754a7a7f..3d85a15fc 100644 --- a/exercises/isogram/src/test/java/IsogramTest.java +++ b/exercises/isogram/src/test/java/IsogramTest.java @@ -2,58 +2,68 @@ import static org.junit.Assert.*; import org.junit.Test; -import main.Isogram; +import exemple.Isogram; public class IsogramTest { @Test public void testIsogram() { - assertTrue(Isogram.isIsogram("duplicates")); + Isogram iso = new Isogram("duplicates"); + assertTrue(iso.isogramChecker()); } @Test public void testNotIsogram() { - assertFalse(Isogram.isIsogram("eleven")); + Isogram iso = new Isogram("eleven"); + assertFalse(iso.isogramChecker()); } @Test public void testMediumLongIsogram() { - assertTrue(Isogram.isIsogram("subdermatoglyphic")); + Isogram iso = new Isogram("subdermatoglyphic"); + assertTrue(iso.isogramChecker()); } @Test public void testCaseInsensitive() { - assertFalse(Isogram.isIsogram("Alphabet")); + Isogram iso = new Isogram("Alphabet"); + assertFalse(iso.isogramChecker()); } @Test public void testIsogramWithHyphen() { - assertTrue(Isogram.isIsogram("thumbscrew-japingly")); + Isogram iso = new Isogram("thumbscrew-japingly"); + assertTrue(iso.isogramChecker()); } @Test public void testIgnoresMultipleHyphens() { - assertTrue(Isogram.isIsogram("Hjelmqvist-Gryb-Zock-Pfund-Wax")); + Isogram iso = new Isogram("Hjelmqvist-Gryb-Zock-Pfund-Wax"); + assertTrue(iso.isogramChecker()); } @Test public void testWorksWithGermanLetters() { - assertTrue(Isogram.isIsogram("Heizölrückstoßabdämpfung")); + Isogram iso = new Isogram("Heizölrückstoßabdämpfung"); + assertTrue(iso.isogramChecker()); } @Test public void testIgnoresSpaces() { - assertFalse(Isogram.isIsogram("the quick brown fox")); + Isogram iso = new Isogram("the quick brown fox"); + assertFalse(iso.isogramChecker()); } @Test public void testIgnoresSpaces2() { - assertTrue(Isogram.isIsogram("Emily Jung Schwartzkopf")); + Isogram iso = new Isogram("Emily Jung Schwartzkopf"); + assertTrue(iso.isogramChecker()); } @Test public void testDuplicateAccentedLetters() { - assertFalse(Isogram.isIsogram("éléphant")); + Isogram iso = new Isogram("éléphant"); + assertFalse(iso.isogramChecker()); } } From b3dda65f213e6911f4a7344fbe9a480d3d69c1c1 Mon Sep 17 00:00:00 2001 From: Fauchart Bastien Date: Fri, 17 Mar 2017 12:47:06 +0100 Subject: [PATCH 6/6] Improve Isogram implementation --- .../{Isogram.java => IsogramChecker.java} | 13 ++--- .../isogram/src/test/java/IsogramTest.java | 53 +++++++++++-------- 2 files changed, 37 insertions(+), 29 deletions(-) rename exercises/isogram/src/example/java/{Isogram.java => IsogramChecker.java} (73%) diff --git a/exercises/isogram/src/example/java/Isogram.java b/exercises/isogram/src/example/java/IsogramChecker.java similarity index 73% rename from exercises/isogram/src/example/java/Isogram.java rename to exercises/isogram/src/example/java/IsogramChecker.java index fc937f688..2ed4865ca 100644 --- a/exercises/isogram/src/example/java/Isogram.java +++ b/exercises/isogram/src/example/java/IsogramChecker.java @@ -1,23 +1,20 @@ -package exemple; +package example; import java.util.HashSet; import java.util.Set; import static java.util.Arrays.stream; import static java.util.stream.Collectors.joining; -public class Isogram { +public class IsogramChecker { - private String word; - - public Isogram(String word){ - this.word = word; + public IsogramChecker(){ } - public boolean isogramChecker(){ + public boolean isIsogram(String word){ Set charSet = new HashSet<>(); - String[] words = this.word.split(" "); + String[] words = word.split(" "); String newWord = concat(words); words = newWord.split("-"); diff --git a/exercises/isogram/src/test/java/IsogramTest.java b/exercises/isogram/src/test/java/IsogramTest.java index 3d85a15fc..9c0af736d 100644 --- a/exercises/isogram/src/test/java/IsogramTest.java +++ b/exercises/isogram/src/test/java/IsogramTest.java @@ -1,69 +1,80 @@ package test; import static org.junit.Assert.*; + +import org.junit.Ignore; import org.junit.Test; -import exemple.Isogram; +import example.IsogramChecker; public class IsogramTest { @Test public void testIsogram() { - Isogram iso = new Isogram("duplicates"); - assertTrue(iso.isogramChecker()); + IsogramChecker iso = new IsogramChecker(); + assertTrue(iso.isIsogram("duplicates")); } + @Ignore @Test public void testNotIsogram() { - Isogram iso = new Isogram("eleven"); - assertFalse(iso.isogramChecker()); + IsogramChecker iso = new IsogramChecker(); + assertFalse(iso.isIsogram("eleven")); } + @Ignore @Test public void testMediumLongIsogram() { - Isogram iso = new Isogram("subdermatoglyphic"); - assertTrue(iso.isogramChecker()); + IsogramChecker iso = new IsogramChecker(); + assertTrue(iso.isIsogram("subdermatoglyphic")); } + @Ignore @Test public void testCaseInsensitive() { - Isogram iso = new Isogram("Alphabet"); - assertFalse(iso.isogramChecker()); + IsogramChecker iso = new IsogramChecker(); + assertFalse(iso.isIsogram("Alphabet")); } + @Ignore @Test public void testIsogramWithHyphen() { - Isogram iso = new Isogram("thumbscrew-japingly"); - assertTrue(iso.isogramChecker()); + IsogramChecker iso = new IsogramChecker(); + assertTrue(iso.isIsogram("thumbscrew-japingly")); } + @Ignore @Test public void testIgnoresMultipleHyphens() { - Isogram iso = new Isogram("Hjelmqvist-Gryb-Zock-Pfund-Wax"); - assertTrue(iso.isogramChecker()); + IsogramChecker iso = new IsogramChecker(); + assertTrue(iso.isIsogram("Hjelmqvist-Gryb-Zock-Pfund-Wax")); } + @Ignore @Test public void testWorksWithGermanLetters() { - Isogram iso = new Isogram("Heizölrückstoßabdämpfung"); - assertTrue(iso.isogramChecker()); + IsogramChecker iso = new IsogramChecker(); + assertTrue(iso.isIsogram("Heizölrückstoßabdämpfung")); } + @Ignore @Test public void testIgnoresSpaces() { - Isogram iso = new Isogram("the quick brown fox"); - assertFalse(iso.isogramChecker()); + IsogramChecker iso = new IsogramChecker(); + assertFalse(iso.isIsogram("the quick brown fox")); } + @Ignore @Test public void testIgnoresSpaces2() { - Isogram iso = new Isogram("Emily Jung Schwartzkopf"); - assertTrue(iso.isogramChecker()); + IsogramChecker iso = new IsogramChecker(); + assertTrue(iso.isIsogram("Emily Jung Schwartzkopf")); } + @Ignore @Test public void testDuplicateAccentedLetters() { - Isogram iso = new Isogram("éléphant"); - assertFalse(iso.isogramChecker()); + IsogramChecker iso = new IsogramChecker(); + assertFalse(iso.isIsogram("éléphant")); } }