From e8028a2ed6c61ca31f59e1bfda8f1c0a3bc3d7bf Mon Sep 17 00:00:00 2001 From: Chetan Birajdar Date: Tue, 14 Jun 2016 13:20:08 -0700 Subject: [PATCH 1/2] Hanged --- .gitignore | 3 ++ build.gradle | 1 + .../java/com/hangman/players/YourPlayer.java | 47 ++++++++++++++++-- .../com/hangman/players/YourPlayerTest.java | 48 ++++++++++++++----- 4 files changed, 85 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index ec80fd0..1a2155f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ .idea +*.ipr +*.iws *.iml target .DS_Store .gradle/ build/ +out/ diff --git a/build.gradle b/build.gradle index cd0251e..bf0d1b7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'java' apply plugin: 'application' apply plugin: 'maven' +apply plugin: 'idea' mainClassName = 'com.hangman.HangmanRunner' group = 'Hangman' diff --git a/src/main/java/com/hangman/players/YourPlayer.java b/src/main/java/com/hangman/players/YourPlayer.java index df4a96a..58877c2 100644 --- a/src/main/java/com/hangman/players/YourPlayer.java +++ b/src/main/java/com/hangman/players/YourPlayer.java @@ -2,11 +2,52 @@ import com.hangman.Player; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Random; public class YourPlayer implements Player { - @Override - public char getGuess(List currentClue) { - return 'a'; + + private List guessedChars = new ArrayList<>(); + + private List highFrequencyCharSet = Arrays.asList('e', 't', 'a', 'o', 'i', 'n', 's', 'h', 'r', 'd', 'l', 'c', 'u', 'm', 'w', 'f', 'g', 'y', 'p', 'b', 'v', 'k', 'j', 'x', 'q'); + + private int getHighFrequencyCharSetSize() { + return highFrequencyCharSet.size(); + } + + public List getHighFrequencyCharSet() { + return highFrequencyCharSet; + } + + public void setHighFrequencyCharSet(List highFrequencyCharSet) { + this.highFrequencyCharSet = highFrequencyCharSet; + } + + @Override public char getGuess(List currentClue) { + Character guess = getNextCharacter(); + guessedChars.add(guess); + return guess; + } + + /* + private char getNextCharacterAlternative() { + Character next = 'e'; + for (Character character : highFrequencyCharSet) { + if (!guessedChars.contains(character)) { + next = character; + break; + } + } + return next; + }*/ + + private Character getNextCharacter() { + Character next = highFrequencyCharSet.get(new Random().nextInt(getHighFrequencyCharSetSize())); + while (guessedChars.contains(next)) { + next = getNextCharacter(); + } + return next; } } diff --git a/src/test/java/com/hangman/players/YourPlayerTest.java b/src/test/java/com/hangman/players/YourPlayerTest.java index b1e80e5..fbaa8e0 100644 --- a/src/test/java/com/hangman/players/YourPlayerTest.java +++ b/src/test/java/com/hangman/players/YourPlayerTest.java @@ -1,34 +1,60 @@ package com.hangman.players; import org.junit.Test; + import java.util.Arrays; -import static org.junit.Assert.assertEquals; + +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertTrue; public class YourPlayerTest { - @Test - public void guessesAWhenThereAreNoSuccessfulCharactersGuessedYet() { + + @Test public void guessesACharacterWhenThereAreNoSuccessfulCharactersGuessedYet() { YourPlayer player = new YourPlayer(); + player.setHighFrequencyCharSet(Arrays.asList('a', 'b', 'c')); + char guess = player.getGuess(Arrays.asList(null, null, null)); - assertEquals('a', guess); + assertTrue(player.getHighFrequencyCharSet().contains(guess)); } - @Test - public void guessesAWhenThereAreSuccessfulCharactersGuessedThatAreNotA() { + @Test public void guessesTWhenThereAreSuccessfulCharactersGuessedThatAreNotE() { YourPlayer player = new YourPlayer(); - char guess = player.getGuess(Arrays.asList('m', null, 'n')); + char c1 = player.getGuess(Arrays.asList(null, null, null)); + + assertTrue(player.getHighFrequencyCharSet().contains(c1)); - assertEquals('a', guess); + char c2 = player.getGuess(Arrays.asList('e', null, null)); + + assertTrue(player.getHighFrequencyCharSet().contains(c2)); } @Test - public void guessesAWhenAIsThereAreAsInTheClueAsWell() { + public void guessesADifferentCharacterThanTheOnePresentInCurrentClue() { + YourPlayer player = new YourPlayer(); + + char c = player.getGuess(Arrays.asList('a', 'b', null)); + + assertNotEquals(c, 'a'); + + assertNotEquals(c, 'b'); + } + + @Test public void guessTheFirstCharAsEAndSecondCharAsTAndThirdCharAsA() { YourPlayer player = new YourPlayer(); - char guess = player.getGuess(Arrays.asList(null, 'a', null)); + char c1 = player.getGuess(Arrays.asList(null, null, null)); + + char c2 = player.getGuess(Arrays.asList('e', null, null)); + + char c3 = player.getGuess(Arrays.asList('t', null, null)); + + assertTrue(player.getHighFrequencyCharSet().contains(c1)); + + assertTrue(player.getHighFrequencyCharSet().contains(c2)); - assertEquals('a', guess); + assertTrue(player.getHighFrequencyCharSet().contains(c3)); } } From 3623a0a0275ea85fb91de5882e1e4e59e92e0487 Mon Sep 17 00:00:00 2001 From: Chetan Birajdar Date: Tue, 14 Jun 2016 13:46:13 -0700 Subject: [PATCH 2/2] First solution --- src/main/java/com/hangman/players/YourPlayer.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hangman/players/YourPlayer.java b/src/main/java/com/hangman/players/YourPlayer.java index 58877c2..3300249 100644 --- a/src/main/java/com/hangman/players/YourPlayer.java +++ b/src/main/java/com/hangman/players/YourPlayer.java @@ -31,8 +31,7 @@ public void setHighFrequencyCharSet(List highFrequencyCharSet) { return guess; } - /* - private char getNextCharacterAlternative() { + private char getNextCharacter() { Character next = 'e'; for (Character character : highFrequencyCharSet) { if (!guessedChars.contains(character)) { @@ -41,13 +40,14 @@ private char getNextCharacterAlternative() { } } return next; - }*/ + } + /* private Character getNextCharacter() { Character next = highFrequencyCharSet.get(new Random().nextInt(getHighFrequencyCharSetSize())); while (guessedChars.contains(next)) { next = getNextCharacter(); } return next; - } + }*/ }