Hallo! 
Ich versuche im Moment, bestimmte (in einem Array gespeicherte) Muster in einem anderen Array zu finden. Die "große Liste" cells ist eine 2D-Liste von booleans. Ich übergebe der Methode ein Muster, wobei eine 0 für false, eine 1 für true und eine 2 für eins von beidem steht. Die Methode gibt 2 Integer als Array zurück, und zwar die x + y Koordinate des (ersten) gefundenen Musters. Ein Beispiel für ein Muster:
Das Problem: er erkennt das Muster auch, wenn es rotiert ist (um 90°). Wahrscheinlich habe ich einfach irgendwo nicht nachgedacht... Kann mir einer von euch helfen? *-* Falls etwas sinnlos erscheint, es hat alles seinen Sinn! Ich weiß, der Code könnte effizienter sein, aber erstmal ist mir wichtig das er funktioniert...
MFG, me
Ich versuche im Moment, bestimmte (in einem Array gespeicherte) Muster in einem anderen Array zu finden. Die "große Liste" cells ist eine 2D-Liste von booleans. Ich übergebe der Methode ein Muster, wobei eine 0 für false, eine 1 für true und eine 2 für eins von beidem steht. Die Methode gibt 2 Integer als Array zurück, und zwar die x + y Koordinate des (ersten) gefundenen Musters. Ein Beispiel für ein Muster:
Code:
{ { 1, 1, 1, 1 , 2, 0, 1}}
Java:
private int[] checkForPatterns(int[][] pattern) {
for (int x = 0; x < cells.length; x++) {
for (int y = 0; y < cells[0].length; y++) {
int counter = 0;
for (int pX = 0; pX < pattern.length; pX++) {
for (int pY = 0; pY < pattern[0].length; pY++) {
System.out.println(pattern.length + " + "
+ pattern[0].length);
try {
switch (pattern[pX][pY]) {
case 0:
if (cells[x + pX][y + pY] == false)
counter++;
break;
case 1:
if (cells[x + pX][y + pY] == true)
counter++;
break;
case 2:
counter++;
break;
}
} catch (Exception e) {
}
}
}
if (counter == pattern.length * pattern[0].length) {
return new int[] { x, y };
}
}
}
return null;
}
Zuletzt bearbeitet: