宿題のために、絞首刑執行人をだますプログラムを作成する必要があります。これを行うには、単語の文字位置を介して単語をファミリーにグループ化する方法を考え出す必要があります。たとえば、単語の長さが 4 で、"e" と推測された場合、"- - - e" となるすべての単語は、そのパターンをキーとしてハッシュマップの Arraylists の 1 つになり、"- e - -" は、キーとしてパターンを持つ同じハッシュマップの別の ArrayLists になります。私の問題は、私のプログラムがパターンを識別できるにもかかわらずです。空のセット、またはすべての単語を含む 1 つの ArrayList を返します。私は今、1時間以上さまざまなことを試してきましたが、それらを正しくグループ化できないようです. どんな助けでも大歓迎です。
import java.util.ArrayList;
import java.lang.StringBuilder;
import java.util.HashMap;
public class EvilEngine
{
HashMap<StringBuilder, ArrayList> families = new HashMap<StringBuilder, ArrayList>();
int k = 0;
ArrayList<String> currentList = new ArrayList();
StringBuilder blankPattern = new StringBuilder("");
StringBuilder newPattern = new StringBuilder("");
public void PatternMatcher(ArrayList wordlist, char guess, Integer wordlength)
{
String word;
int j = 0;
int x = 0;
int biggest = 0;
StringBuilder longest = null;
while(x < wordlist.size())
{
int i = 0;
int index = 0;
for (i=0; i < wordlength; i++)
{
blankPattern = blankPattern.append("-");
}
boolean boo = false;
newPattern = blankPattern;
word = (String) wordlist.get(x);
index = word.indexOf(guess);
while (index >= 0)
{
blankPattern.setCharAt(index, guess);
newPattern = blankPattern;
index = word.indexOf(guess, index + 1);
}
this.PatternCompiler(word,newPattern);
blankPattern = blankPattern.delete(0,wordlength);
x++;
}
}
public void PatternCompiler (String word, StringBuilder pattern)
{
if(!families.containsKey(pattern))
{
ArrayList<String> newPatternList = new ArrayList();
newPatternList.add(word);
families.put(pattern, newPatternList);
}
if (families.containsKey(pattern))
{
ArrayList<String> oldPatternList = new ArrayList();
oldPatternList = families.get(pattern);
oldPatternList.add(word);
families.put(pattern, oldPatternList);
}
else {
System.out.println("Error");
}
}
public HashMap<StringBuilder, ArrayList> returnFamilies (){
return families;
}
}