Ceci est un exemple de ce que je veux faire via du code. Je sais que vous pouvez utiliser la recherche de points de saut pour passer facilement du nœud vert au nœud rouge sans problème, ou même A *. Mais comment calculer cela avec des chaînes.
Dans l'image, vous pouvez voir qu'il ne faut que 8 mouvements pour passer du nœud vert au nœud rouge lors de la prise du chemin bleu. Le chemin bleu déplace instantanément votre position d'un nœud violet au suivant. L'espace au milieu qui coûte 2 mouvements est un point entre deux zones de distorsion que vous devez déplacer pour y accéder.
Il est clairement plus rapide de prendre le chemin bleu, car il suffit de se déplacer à peu près (à peu près) jusqu'au chemin jaune, mais comment faire par programme?
Pour résoudre ce problème, supposons qu'il existe plusieurs "déformations" violettes autour du graphique que vous pouvez utiliser, ET nous savons exactement où chaque point violet se déformera et où elles se trouvent sur le graphique.
Certaines chaînes violettes sont bidirectionnelles et d'autres non, ce qui signifie que parfois vous ne pouvez entrer dans une chaîne que d'un côté, mais pas revenir en arrière après la déformation.
J'ai réfléchi à la solution et j'ai seulement conclu que je serais en mesure de calculer le problème en vérifiant la distance à chaque point de distorsion (moins les points unidirectionnels), et la différence entre ces points et les points proches d'eux .
Le programme devrait comprendre d'une manière ou d'une autre qu'il est plus avantageux de prendre la deuxième chaîne, plutôt que de marcher depuis le premier saut. Donc, au lieu de déplacer 6 points, puis de déformer, puis de déplacer les 8 étapes restantes à pied (ce qui est également plus rapide que de ne pas utiliser de chaînes du tout), il faudrait les 6 mouvements, puis les deux mouvements vers la deuxième chaîne.
EDIT: J'ai réalisé que le chemin bleu prendra en fait 12 coups, au lieu de 8, mais la question reste la même.