En fait, c'est très simple. Ceci est un puzzle `jigsaw' mathématique ! Vous avez une photo coupée en q×q pièces, où q est une puissance d'un nombre premier p. Elle représente donc le plan vectoriel sur le corps fini Fq à q éléments.
Ces q×q pièces vous seront présentées en désordre, résultat d'une transformation affine (cachée) du dit plan. Et votre but est de reconstituer l'image en trouvant la transformation affine inverse. Et vous avez droit aux essais multiples pour ce faire.
Rappelons qu'une transformation affine est une transformation linéaire suivie d'une translation. Toutes sont des opérations sur Fq.
Pour savoir à quelle partie du puzzle on a à faire, je pense que PixelChecksum pourrait convenir, mais peut importe puisque c'est surtout l'algorithme de résolution du puzzle qui me semble le plus compliqué.
Il y en a un ici qui cherche à faire la même chose (mais pour un 3x3) : http://www.developpez.net/forums/d55070 ... zle-3-3-a/.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Wow... j'avais commencé
à écrire comment j'aurais procédé mais je me suis tanné après une heure ...
et ta réponse toute simple "pas de toi" explique la même chose .... en 200 lignes de moins
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
D'après ce que j'ai vu, ce jeu s'appelle le jeu du taquin. D'ailleurs, en tapant "algorithme taquin" dans un moteur de recherche, on peut trouver pas mal de bonnes choses.
Modifié en dernier par orax le jeu. 16 juil. 2009 04:51, modifié 1 fois.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
C'est un gros travail ce que tu veux faire... du moins pour moi ça le serait.
Néanmoins, sans me rappeler du nom exact de la fonction, je sais que dans les include tu a gdi.au3.
Il y'a une fonction là-dedans qui te permet de prendre une capture d'écran.
Je commencerais par là.
Ton but... Prendre une capture d'écran du puzzle (a des coordonnées prédéfinies)
Ensuite, par le moyen d'une gui, tu spécifies le nombre de carrés
(Largeur et Hauteur)
Par la suite, avec ces informations, tu divises le puzzle en le nombre de pièces.
Donc si le casse-tête est 4 X 4, le script utilise l'image du casse-tête capturée au départ, la divise
en 16 morceaux égaux, les 16 morceaux stockés dans des variables.
Une fois le casse-tête mélangé, tu reprends une capture d'écran du casse-tête, divise encore le casse-tête
en 16 morceaux et puis tu utilise la fonction
Pixelsearch pour les images ( je sais que j'en ai entendu parler sur le forum mais je ne me rappelle pas du nom)
De cette manière, tu peux établir la position des morceaux .
Une fois que la nouvelle position des morceaux est établie, tu peux commencer à utiliser les infos. trouvés sur
les liens qu'on t'a donné pour générer un script qui déterminera la séquence d'action à faire pour les remettre
en place le plus rapidement possible.
Ensuite, pour placer les clics au bons endroit, on utilise les coordonnés données pour la première capture d'écran
afin de définir la position exacte du centre de chacun des morceaux. Le script place les clics... et voilà !
C'est juste mon approche brouillon de la chose...
La manière la plus simple de le faire selon moi.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )