Localize uma imagem de arte ASCII dentro de um corpo de texto com uma certa tolerância para erro
Existem algoritmos que encontrariam a seguinte imagem da arte ASCII?
+
+
+++
+++++++
++ ++
++ + ++
++ +++ ++
++ + ++
++ ++
+++++++
+++
Dentro do corpo de texto a seguir?
+ + + ++ + +++ + +
+ ++ + + ++++ + + + + + + +++ +++ +
+ + + ++ ++ ++ + ++ + + + + +
+ ++ + ++ + + + ++ ++ + +
++++++ + + + ++ + + + + ++ + + +
+ + + + + ++ + ++ + + + +
+++ + ++ + + + +++ + + ++ +
+++++ + + + + + + + +
+ + + + + + + + + + + +
++ + + + ++ + + + ++
Devo destacar a imagem da arte ASCII em amarelo, que corresponde à forma completa. Veja a foto em anexo:
Eu tenho que procurar um arquivo que contém a forma aproximada, mas não completamente, um número de+
pode estar faltando). A tolerância para uma falta+
na forma deve ser definido manualmente.
Agora, tenho duas matrizes de dados de matrizes 2D: [100] [100] e a matriz SlimeTorpedo: [13] [11].
Código de como fazer a detecção conforme indicado por @kjartan (3-4 bala):
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++;
}
}
Qual seria a orientação geral de como abordar esse problema?