| Croix magiques : l'algorithme | ||
| Le principe est de balayer toutes les combinaisons en comptant dans un tableau en base n de manière 'intelligente', pour ne retenir que celles qui fonctionnent. | ![]() |
|
| Les points testés sont dans un tableau iTp (tableau de points au format entier, integer) dans lequel on va compter en base n, n étant le nombre de point. Pour des raisons de simplicité, on ne calcule que les solutions uniques. Pour se passer de la recherche des solutions par symétrie de rotation, il suffit de chercher les solutions avec 1 sur la première 'crète' (indice 1 sur la figure) puis avec un sur le permier 'creux' (indice 2 sur la figure). | ||
| La boucle de recherche incrémente le point d'indice i, jusqu'à ce que les i premiers points soient différents. Si le point d'indice i est arrivé au maximum n, il faut incrémenter le point d'indice i-1 et repartir avec le point d'indice i à la valeur 1. Chaque fois que l'indice i le permet, on testera les cotés déjà affectés. Si ces cotés ne remplissent pas les conditions (somme constante), on reprendra le comptage des i premiers points. Quand une combinaison fonctionne, elle est stockée dans un tableau de solutions. Pour éliminer les solutions par symétrie mirroir, il faut, après avoir trouvé une solution, la tester par rapport aux solutions déjà trouvées. Il faut donc rebalayer le tableau des solutions en remontant vers la première. Soit la solution trouvée possède un 1 sur l'indice a, soit le 1 est sur l'indice b, dans les deux cas, on ne testera que celles qui sont de même nature.
|
||
| << Accueil | ||