diff --git a/.gitignore b/.gitignore index efec373..ae3c172 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1 @@ /bin/ -.classpath -.project -.settings \ No newline at end of file diff --git a/BowlingKata/.classpath b/BowlingKata/.classpath new file mode 100644 index 0000000..1b83178 --- /dev/null +++ b/BowlingKata/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/BowlingKata/.gitignore b/BowlingKata/.gitignore index efec373..ae3c172 100644 --- a/BowlingKata/.gitignore +++ b/BowlingKata/.gitignore @@ -1,4 +1 @@ /bin/ -.classpath -.project -.settings \ No newline at end of file diff --git a/BowlingKata/.project b/BowlingKata/.project new file mode 100644 index 0000000..9fccbe4 --- /dev/null +++ b/BowlingKata/.project @@ -0,0 +1,17 @@ + + + BowlingKata + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/BowlingKata/.settings/org.eclipse.jdt.core.prefs b/BowlingKata/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..3a21537 --- /dev/null +++ b/BowlingKata/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/PokerKata/.classpath b/PokerKata/.classpath new file mode 100644 index 0000000..1b83178 --- /dev/null +++ b/PokerKata/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/PokerKata/.gitignore b/PokerKata/.gitignore index efec373..ae3c172 100644 --- a/PokerKata/.gitignore +++ b/PokerKata/.gitignore @@ -1,4 +1 @@ /bin/ -.classpath -.project -.settings \ No newline at end of file diff --git a/PokerKata/.project b/PokerKata/.project new file mode 100644 index 0000000..c950868 --- /dev/null +++ b/PokerKata/.project @@ -0,0 +1,17 @@ + + + PokerKata + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/PokerKata/.settings/org.eclipse.jdt.core.prefs b/PokerKata/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..3a21537 --- /dev/null +++ b/PokerKata/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/PokerKata/src/session3/PokerGame.java b/PokerKata/src/session3/PokerGame.java index fec4ec6..ff715b9 100644 --- a/PokerKata/src/session3/PokerGame.java +++ b/PokerKata/src/session3/PokerGame.java @@ -16,29 +16,39 @@ import java.util.Arrays; * * @author crille * + * Spades Hearts Clubs Diamonds + * + * Jack Queen King Ace /* 8. Straight Flush 7. Four of a kind 6. Full + * House 5. Flush 4. Straight 3. Three of a Kind 2. Two Pairs 1. Pair 0. + * Nothing */ + public class PokerGame { + static int NUM_OF_CARDS = 5; + public int getScore(String hand) { int score = 0; - char[] values = getValues(hand); + int[] values = new int[NUM_OF_CARDS]; char[] colors = getColors(hand); + values = getValues(hand); + if (findStraightFlush(values, colors) == true) - score = 14; - else if (findStraight(values) == true) - score = 12; - else if (findFlush(colors) == true) - score = 10; - else if (findFullHouse(values) == true) - score = 9; + score = 8; else if (findFourOfAKind(values) == true) score = 7; - else if (findTwoPairs(values) == true) + else if (findFullHouse(values) == true) score = 6; + else if (findFlush(colors) == true) + score = 5; + else if (findStraight(values) == true) + score = 4; else if (findThreeOfAKind(values) == true) score = 3; - else if (findPair(values) == true) + else if (findTwoPairs(values) == true) score = 2; + else if (findPair(values) == true) + score = 1; else score = 0; return score; @@ -51,10 +61,10 @@ public class PokerGame { * @param hand * @return true if there is a pair, otherwise false */ - private boolean findPair(char[] values) { + private boolean findPair(int[] values) { // Loop again, find pair - for (int i = 0; i < values.length - 1; i++) { + for (int i = 0; i < NUM_OF_CARDS - 1; i++) { if (values[i] == values[i + 1]) return true; } @@ -68,10 +78,10 @@ public class PokerGame { * @param hand * @return true if there is a Three of a kind, otherwise false */ - private boolean findThreeOfAKind(char[] values) { + private boolean findThreeOfAKind(int[] values) { // Loop again, find three of a kind - for (int i = 0; i < values.length - 2; i++) { + for (int i = 0; i < NUM_OF_CARDS - 2; i++) { if (values[i] == values[i + 1] && values[i + 1] == values[i + 2]) return true; } @@ -85,11 +95,11 @@ public class PokerGame { * @param hand * @return true if there is two pairs, otherwise false */ - private boolean findTwoPairs(char[] values) { + private boolean findTwoPairs(int[] values) { try { // Loop again, find pair - for (int i = 0; i < values.length - 1; i++) { + for (int i = 0; i < NUM_OF_CARDS - 1; i++) { if (values[i] == values[i + 1]) { if (values[i + 2] == values[i + 3] || values[i + 3] == values[i + 4]) { @@ -111,10 +121,10 @@ public class PokerGame { * @param hand * @return true if there is a Four of a kind, otherwise false */ - private boolean findFourOfAKind(char[] values) { + private boolean findFourOfAKind(int[] values) { // Loop again, find three of a kind - for (int i = 0; i < values.length - 2; i++) { + for (int i = 0; i < NUM_OF_CARDS - 2; i++) { if (values[i] == values[i + 1] && values[i + 1] == values[i + 2] && values[i + 2] == values[i + 3]) return true; @@ -130,7 +140,7 @@ public class PokerGame { * @param hand * @return true if there is a Full House, otherwise false */ - private boolean findFullHouse(char[] values) { + private boolean findFullHouse(int[] values) { if (values[0] == values[1] && values[3] == values[4] && (values[0] == values[2] || values[2] == values[3])) @@ -160,8 +170,8 @@ public class PokerGame { * @param values * @return true if there is a straight, otherwise false */ - private boolean findStraight(char[] values) { - for (int i = 0; i < values.length - 1; i++) + private boolean findStraight(int[] values) { + for (int i = 0; i < NUM_OF_CARDS - 1; i++) if (values[i + 1] != values[i] + 1) return false; return true; @@ -174,8 +184,8 @@ public class PokerGame { * @param colors * @return */ - private boolean findStraightFlush(char[] values, char[] colors) { - for (int i = 0; i < values.length - 1; i++) + private boolean findStraightFlush(int[] values, char[] colors) { + for (int i = 0; i < NUM_OF_CARDS - 1; i++) if (values[i + 1] != values[i] + 1) return false; if (colors[0] == colors[4]) @@ -190,19 +200,61 @@ public class PokerGame { * @param hand * @return The values of all the cards */ - private char[] getValues(String hand) { - char[] values = "".toCharArray(); - String temp = ""; + private int[] getValues(String hand) { + int[] values = new int[NUM_OF_CARDS]; + // Remove all colors + hand = hand.replace("S", ""); + hand = hand.replace("H", ""); + hand = hand.replace("C", ""); + hand = hand.replace("D", ""); + + // J Q K A // Find all values - for (int i = 1; i < hand.length(); i += 2) { - temp += hand.charAt(i); + for (int i = 0; i < NUM_OF_CARDS; i++) { + if (hand.charAt(i) == '2') + values[i] = 2; + else if (hand.charAt(i) == '3') + values[i] = 3; + else if (hand.charAt(i) == '4') + values[i] = 4; + else if (hand.charAt(i) == '5') + values[i] = 5; + else if (hand.charAt(i) == '6') + values[i] = 6; + else if (hand.charAt(i) == '7') + values[i] = 7; + else if (hand.charAt(i) == '8') + values[i] = 8; + else if (hand.charAt(i) == '9') + values[i] = 9; + else if (hand.charAt(i) == '1') { + values[i] = 10; + i++; + } + else if (hand.charAt(i) == 'J') + values[i] = 11; + else if (hand.charAt(i) == 'Q') + values[i] = 12; + else if (hand.charAt(i) == 'K') + values[i] = 13; + else if (hand.charAt(i) == 'A') + values[i] = 14; } - values = temp.toCharArray(); Arrays.sort(values); return values; } + /* + * Gammal char-version + * + * private char[] getValues(String hand) { char[] values = "".toCharArray(); + * String temp = ""; + * + * // Find all values for (int i = 1; i < hand.length(); i += 2) { temp += + * hand.charAt(i); } values = temp.toCharArray(); Arrays.sort(values); + * return values; } + */ /** * Extracts all the colors from the given String (hand) * diff --git a/PokerKata/test/session3/PokerGameTest.java b/PokerKata/test/session3/PokerGameTest.java index a9cee8f..ebe0bbd 100644 --- a/PokerKata/test/session3/PokerGameTest.java +++ b/PokerKata/test/session3/PokerGameTest.java @@ -19,7 +19,7 @@ public class PokerGameTest { @Test public void nothing_gives_0() throws Exception { - String hand = "S2K3R5H6S7"; + String hand = "S2H3C4D5S7"; int result = myGame.getScore(hand); @@ -27,8 +27,17 @@ public class PokerGameTest { } @Test - public void single_pair_gives_2() throws Exception { - String hand = "S2K2R5H6S7"; + public void pair_gives_1() throws Exception { + String hand = "S3H3C4D5S8"; + + int result = myGame.getScore(hand); + + assertEquals(1, result); + } + + @Test + public void two_pairs_gives_2() throws Exception { + String hand = "S3H3C9D5S5"; int result = myGame.getScore(hand); @@ -37,7 +46,7 @@ public class PokerGameTest { @Test public void three_of_a_kind_gives_3() throws Exception { - String hand = "S2K2R2H6S7"; + String hand = "S8H8C8D3S4"; int result = myGame.getScore(hand); @@ -45,8 +54,29 @@ public class PokerGameTest { } @Test - public void two_pairs_gives_6() throws Exception { - String hand = "S2K2R5H7S7"; + @Ignore + public void straight_gives_4() throws Exception { + String hand = "K2S3H4R5R6"; + + int result = myGame.getScore(hand); + + assertEquals(4, result); + } + + @Test + @Ignore + public void flush_gives_5() throws Exception { + String hand = "S2S6S7S8S9"; + + int result = myGame.getScore(hand); + + assertEquals(5, result); + } + + @Test + @Ignore + public void full_house_gives_6() throws Exception { + String hand = "S2K2R2H7S7"; int result = myGame.getScore(hand); @@ -54,6 +84,7 @@ public class PokerGameTest { } @Test + @Ignore public void four_of_a_kind_gives_7() throws Exception { String hand = "S2K2R2H2S7"; @@ -63,48 +94,22 @@ public class PokerGameTest { } @Test - public void full_house_gives_9() throws Exception { - String hand = "S2K2R2H7S7"; + @Ignore + public void straight_flush_gives_8() throws Exception { + String hand = "K2K3K4K5K6"; + + int result = myGame.getScore(hand); + + assertEquals(8, result); + } + + @Test + @Ignore + public void royal_straight_flush_gives_9() throws Exception { + String hand = "R10RKRDRKRE"; int result = myGame.getScore(hand); assertEquals(9, result); } - - @Test - public void flush_gives_10() throws Exception { - String hand = "S2S6S7S8S9"; - - int result = myGame.getScore(hand); - - assertEquals(10, result); - } - - @Test - public void straight_gives_12() throws Exception { - String hand = "K2S3H4R5R6"; - - int result = myGame.getScore(hand); - - assertEquals(12, result); - } - - @Test - public void straight_flush_gives_14() throws Exception { - String hand = "K2K3K4K5K6"; - - int result = myGame.getScore(hand); - - assertEquals(14, result); - } - - @Test - @Ignore - public void royal_straight_flush_gives_16() throws Exception { - String hand = "R10RKRDRKRE"; - - int result = myGame.getScore(hand); - - assertEquals(16, result); - } } \ No newline at end of file diff --git a/StringCalculator/.classpath b/StringCalculator/.classpath new file mode 100644 index 0000000..1b83178 --- /dev/null +++ b/StringCalculator/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/StringCalculator/.gitignore b/StringCalculator/.gitignore index efec373..ae3c172 100644 --- a/StringCalculator/.gitignore +++ b/StringCalculator/.gitignore @@ -1,4 +1 @@ /bin/ -.classpath -.project -.settings \ No newline at end of file diff --git a/StringCalculator/.project b/StringCalculator/.project new file mode 100644 index 0000000..a75efd1 --- /dev/null +++ b/StringCalculator/.project @@ -0,0 +1,17 @@ + + + StringCalculator + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/StringCalculator/.settings/org.eclipse.jdt.core.prefs b/StringCalculator/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..3a21537 --- /dev/null +++ b/StringCalculator/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8