Suchen Sie ein ASCII-Kunstbild in einem Textkörper mit einer gewissen Toleranz für Fehler
Gibt es Algorithmen, die das folgende ASCII-Art-Bild finden würden?
+
+
+++
+++++++
++ ++
++ + ++
++ +++ ++
++ + ++
++ ++
+++++++
+++
Innerhalb des folgenden Textkörpers?
+ + + ++ + +++ + +
+ ++ + + ++++ + + + + + + +++ +++ +
+ + + ++ ++ ++ + ++ + + + + +
+ ++ + ++ + + + ++ ++ + +
++++++ + + + ++ + + + + ++ + + +
+ + + + + ++ + ++ + + + +
+++ + ++ + + + +++ + + ++ +
+++++ + + + + + + + +
+ + + + + + + + + + + +
++ + + + ++ + + + ++
Ich muss das ASCII-Kunstbild in Gelb hervorheben, das der vollständigen Form entspricht. Siehe das Bild im Anhang:
Ich muss eine Datei suchen, die die grobe Form enthält, aber nicht vollständig eine Reihe von+
kann fehlen). Die Toleranz für ein Vermisstes+
in der Form sollte von Hand eingestellt werden.
Jetzt habe ich zwei 2D-Arrays als Datenarray: [100] [100] und das SlimeTorpedo-Array: [13] [11].
Code für die Erkennung, wie von @kjartan angegeben (3-4 Aufzählungszeichen):
int match = 0;
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
//Compare DataArr[i][j] with SlimeTorpedoArr[i][j]
//Look for "checked" position in the picture ("+"),
//which corresponds to a checked position in the
//slime torpedo array.
//match++;
}
}
Was wäre eine allgemeine Anleitung, um dieses Problem anzugehen?