L’invariance fait partie des techniques avancées. Elle agit sur des cases vides ou sur des cases contenant des booléens. Elle demande la mise en place d’hypothèses.
La formulation ci-dessous s’applique aux cases contenant des booléens; sachant qu’on peut toujours mettre un booléen dans une case vide, elle s’applique donc aussi aux cases vides.
Soient deux cases contenant chacune un booléen, a et b.
Si a => b et ¬a => b, alors b est vrai.
Si a => ¬b et ¬a => ¬b, alors b est faux.
Le signe ¬ est la négation et signifie “non”.
Si, quel que soit l’état vrai ou faux de a, b change mais prend toujours la même valeur (en général faux mais cela peut être vrai quelquefois) alors on peut remplacer b par cette valeur.
Comment est effectuée l’invariance sur Actilud
Pour que les énigmes ne soit pas trop difficiles, l’invariance ne poursuit pas ses déductions jusqu’à la fin de l’énigme. Lorsque le solveur applique la technique de l’invariance, il change la valeur d’un booléen ou d’une case vide, puis il lance les répercussions et fusions, les intersections, l’autocomplétion (détection des cases qui sont vraies ou fausses en fonction des signes vrai et faux présents). C’est déjà bien suffisant pour détecter des cases intéressantes. Le solveur applique ces techniques une seule fois, puis il observe le résultat.
Le solveur ne teste que les cases qui contiennent un booléen ou qui sont vides dans des rangées qui contiennent au moins deux signes faux. Il commence toujours par les booléens les plus répandus et s’arrête dès qu’une case a produit de l’effet : donc il ne teste pas toutes les cases.
Pas de panique si le solveur découvre des dizaines de cases invariantes pour un seul booléen ! Cela peut arriver, en effet (j’en ai eu 38 dans une énigme char à voile !) Rassurez vous, vous n’avez généralement pas besoin d’en découvrir autant ! En effet, après avoir découvert une ou deux cases invariantes, les techniques habituelles peuvent prendre le relai. Notre solveur est un mécanisme automatique; détecter toutes les invariances produites par une seule case ne lui demande guère plus de travail que d’en détecter une seule !
Au contraire, dites-vous que si le solveur révèle de nombreuses cases invariantes, c’est que ce n’était vraiment pas difficile d’en trouver une vous-même !