1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
public ArrayList<String> findAllPossibilitiesOnOneLine(String line, String lettersBoard, String lettersPlayer)
{
char [] tmpLetters=lettersBoard.toCharArray(),baseChar;
StringBuilder strBuff= new StringBuilder();
Pattern p;
Matcher m;
String base;
int i=0,j=0,z=0;
boolean test,testValidate=true;
ArrayList<String> listWords = new ArrayList<String>();
int word=0;
for (Integer key : dico.keySet()) {
if(key<=lettersBoard.length()){
for(String pattern : dico.get(key)){
strBuff.setLength(0);
tmpLetters= lettersBoard.toCharArray();
test=true;
strBuff.append('(');
for(j=0;j<pattern.length();j++){
if(!containsChar(tmpLetters,pattern.charAt(j))){
j+=15;
test=false;
}else{
strBuff.append('[').append(pattern.charAt(j)).append("\\.]");
}
}
if(test){
strBuff.append(')');
p = Pattern.compile(strBuff.toString());
m = p.matcher(line);
while(m.find()){
if (m.groupCount()> 0){
testValidate= true;
base =m.group(i).replaceAll("\\.", "");
if (base.length()>0){
baseChar = base.toCharArray();
for(z=0;z<pattern.length();z++){
if(!containsChar(baseChar,pattern.charAt(z))){
if(!lettersPlayer.contains(Character.toString(pattern.charAt(z)))){
testValidate=false;
}
}
}
if((m.start(i)!=0)){
if((line.charAt((m.start(i)-1))!='.')){
testValidate = false;
}
}
if((m.end(i)!=15)){
if((line.charAt(m.end(i))!='.')){
testValidate = false;
}
}
if(testValidate){
listWords.add(pattern);
System.out.println("Motif: "+strBuff+" trouvé sur la ligne: "+line+
"occurence du motif: "+m.group(i)+" start à: " +m.start(i)+" finis à: "+m.end(i));
word++;
}
}
}
}
}
}
}
}
System.out.println("Il ya "+word+" mots possible avec \n");
return listWords; |