Я пытаюсь создать ИИ для игры в палач, часть которого требует подсчета всех вхождений каждого возможного символа в списке слов. Я планирую отбирать список слов перед этим подсчетом, чтобы заставить все работать быстрее (сначала отбраковывая все слова, которые не имеют той же длины, что и предполагаемая фраза, а затем путем отбраковки слов, которые не соответствуют угаданным символам).Подсчет вхождений символов в список слов
Проблема, которая возникает у меня, приведена в коде ниже. Так или иначе, он всегда возвращает список e, которые являются правильной длиной (соответствующие числу возможных символов). Я не уверен, что я здесь делаю неправильно, но проблема, безусловно, где-то в countCharacters.
MethodicComputer(){
guessable = parseGuessable();
wordList = parseText();
priorities = countCharacters(guessable);
}
public char guessCharacter(String hint){
char guess = 0;
System.out.println(guessable);
System.out.println(priorities);
guess = priorities.charAt(0);
priorities = priorities.replaceAll("" + guess, "");
return guess;
}
private String countCharacters(String possibleChars){
charCount = new Hashtable();
String orderedPriorities = "";
char temp = 0;
char adding = 0;
int count = 0;
int max = 0;
int length = possibleChars.length();
for (int i = 0; i<length; i++){
temp = possibleChars.charAt(i);
count = wordList.length() - wordList.replaceAll("" + temp, "").length();
charCount.put(temp, count);
}
while (orderedPriorities.length() < length){
for (int i = 0; i < possibleChars.length(); i++){
temp = possibleChars.charAt(i);
if (max < (int) charCount.get(temp)){
max = (int) charCount.get(temp);
adding = temp;
}
}
orderedPriorities += adding;
possibleChars = possibleChars.replaceAll("" + adding, "");
}
return orderedPriorities;
}
Я провел некоторое тестирование на нем и обнаружил, что, хотя вызовы replaceAll выглядят странно, они работают (и я изменил их на более чистую реализацию Character.toString (добавление) вместо «+ + добавление») , но я все еще получаю много e. –