diff --git a/src/main/java/com/hangman/players/YourPlayer.java b/src/main/java/com/hangman/players/YourPlayer.java index ddcfbd3..061a4e3 100644 --- a/src/main/java/com/hangman/players/YourPlayer.java +++ b/src/main/java/com/hangman/players/YourPlayer.java @@ -1,13 +1,57 @@ package com.hangman.players; + import com.hangman.Player; +import com.hangman.WordList; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; +import java.util.*; public class YourPlayer implements Player { + + private Map characters = new HashMap(); + + private Set guessedCharacters = new HashSet(); + + { + buildCharactersMap(); + } + @Override public char GetGuess(List currentClue) { - return 'a'; + guessedCharacters.addAll(currentClue); + Character c = getMostFrequentCharacter(); + guessedCharacters.add(c); + System.out.println(c); + return c; + } + + private void buildCharactersMap() { + for (String s: WordList.words) + for (Character c: s.toCharArray()) { + if (characters.get(c) == null) + characters.put(c, 1); + else + characters.put(c, characters.get(c) + 1); + } + } + + public char getMostFrequentCharacter() { + + Map.Entry mostFrequentCharacter = null; + + for (Map.Entry e: characters.entrySet()) { + if (mostFrequentCharacter == null) + mostFrequentCharacter = e; + + if (guessedCharacters.contains(e.getKey())) + continue; + + if ((Integer)mostFrequentCharacter.getValue() < (Integer)e.getValue()) + mostFrequentCharacter = e; + + } + + return (Character)mostFrequentCharacter.getKey(); + } + } diff --git a/src/test/java/com/hangman/players/YourPlayerTest.java b/src/test/java/com/hangman/players/YourPlayerTest.java index d613f6b..5bb5c2d 100644 --- a/src/test/java/com/hangman/players/YourPlayerTest.java +++ b/src/test/java/com/hangman/players/YourPlayerTest.java @@ -3,24 +3,17 @@ import org.junit.Test; import java.util.Arrays; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; public class YourPlayerTest { @Test public void GuessesAWhenThereAreNoSuccessfulCharactersGuessedYet() { YourPlayer player = new YourPlayer(); + char expectedGuess = player.getMostFrequentCharacter(); char guess = player.GetGuess(Arrays.asList('_', '_', '_')); - assertEquals('a', guess); - } - - @Test - public void GuessesAWhenThereAreSuccessfulCharactersGuessedThatAreNotA() { - YourPlayer player = new YourPlayer(); - - char guess = player.GetGuess(Arrays.asList('m', '_', 'n')); - - assertEquals('a', guess); + assertEquals(expectedGuess, guess); } @Test @@ -29,6 +22,7 @@ public void GuessesAWhenAIsThereAreAsInTheClueAsWell() { char guess = player.GetGuess(Arrays.asList('_', 'a', '_')); - assertEquals('a', guess); + assertNotEquals('a', guess); } + }