J'ai été à un carnaval où à chaque emplacement, ils marque de votre programme avec un trou spécial coup de poing. La perforatrice est une grille de 3x3 cases. Dans chaque espace, il y a soit un pin qui perfore votre papier ou il n'y en a pas. Cela m'a demandé comment de nombreux modèles différents vous pourriez faire avec cet outil. Ma première pensée a été: 2^9 = 512, mais tous les 9 espaces sans contact n'est pas vraiment un coup de poing, alors, vraiment: 511.
Ensuite, la complexité de me frapper. Surtout depuis que les travailleurs ne sont pas tous de faire preuve de prudence lorsqu'ils punch votre papier, tous ces look idential:
x.. .x. ... etc.
.x. x.. .x.
... ... ..x
Question: Comment pourriez-un test écrit pour le compte de la rotation et de déplacement?
De la Diligence et de pensées à ce jour:
- Binaire se sent comme une partie évidente de cette équation
- Lorsqu'un motif unique est trouvé, de le stocker dans la mémoire afin que les futurs modèles peuvent être testés contre elle
- Il y a 4 possibilités de rotation.
Edit: ce que je veux dire par "rotations", c'est que vous pouvez prendre n'importe quelle forme et la tourner à 90 degrés. Considérons le modèle qui est un point dans le coin supérieur gauche. Vous pouvez activer/faire pivoter de 90 degrés pour obtenir le point dans le coin supérieur droit. Le faire à nouveau et c'est en bas à droite. De nouveau et c'est en bas à gauche. À l'aide de la pure 2^9 calcul, ce sont 4 combinaisons différentes. Pour ce problème, toutefois, ce sont exactement le genre de doublons je suis en train de mauvaises herbes. - Pour chaque rotation, il y a 25 façons de faire de 3x3 grilles de chevauchement:
Les chevauchements:
/ = the spaces in the new one to test
\ = the spaces in a verified unique one
1 2 25
/ / / . . . . . / / / . . . . . . . . . .
/ / / . . . . . / / / . . . . . . . . . .
/ / X \ \ . . . / X X \ . . . . \ \ \ . .
. . \ \ \ . . . . \ \ \ . . . . \ \ \ . .
. . \ \ \ . . . . \ \ \ . . . . \ \ X / /
. . . . . . . . . . . . . . . . . . / / /
. . . . . . . . . . . . . . . . . . / / /
- Un chevauchement n'a pas besoin d'être testé si en soit le motif contient une broche qui n'est pas dans la zone de chevauchement. Au niveau du bit ET peut aider à ici.
- Si vous faites chaque position pour chacun des 2 modèles en chaînes de caractères, vous pouvez simplement vérifier l'égalité
- Ces deux dernières idées être combinés afin d'augmenter l'efficacité?