Il s'agit d'un casse-tête courant que beaucoup d'entre vous ont résolu manuellement. Maintenant, c'est le moment d'écrire un algorithme pour résoudre le même.
Il y a des bâtons de match de nombre égal alignés sur deux côtés différents face à face. Il y a un seul espace vide entre eux. Dites quelque chose comme la figure suivante (si le nombre total de bâtons de match est de 4).
Chaque bâton peut soit glisser d'un pas vers l'avant (si l'espace avant immédiat est libre), soit sauter par-dessus un bâton à l'avant et atterrir dans l'espace libre (si cet espace est libre). Le déplacement en sens inverse n'est pas possible (même l'espace est libre). Aucun saut inversé n'est également autorisé. Un seul mouvement est autorisé en une seule étape.
Maintenant, vous devez écrire un algorithme pour trouver les étapes minimales requises à l'aide desquelles tous les bâtons de match de gauche se poseront du côté droit et tous les sticks de match du côté droit se poseront du côté gauche.
Par exemple: s'il y a au total 2 bâtons de match (1 de chaque côté), les étapes seront les suivantes:
Remarque: Dans la figure ci-dessus, le manche gauche a été déplacé en premier. Une autre solution existe lorsque le manche droit se déplace en premier. Mais pour ce problème, vous devez donner une seule solution et cela suppose également que le stick latéral gauche se déplace en premier.
La figure suivante décrit les mouvements avec 4 bâtons de match (2 de chaque côté):
Remarque: Dans la figure ci-dessus, le manche gauche a été déplacé en premier. Une autre solution existe lorsque le manche droit se déplace en premier. Mais pour ce problème, vous devez donner une seule solution et cela suppose également que le stick latéral gauche se déplace en premier.
[Hypothèse: L'entrée peut être n'importe quel nombre pair entre 02 et 14 (c'est-à-dire 1 à 7 allumettes de chaque côté). Pour les entrées en dehors de cette plage, vous n'avez pas besoin d'effectuer de validation, ni de fournir de message d'erreur. Remarque: Dans la sortie, chaque étape est séparée par un «|» (pipe). Les programmeurs COBOL doivent toujours supposer que PIC 9 (2) est la taille d'entrée et peuvent également supposer que la sortie doit être d'une longueur maximale fixe de 450 caractères, avec des espaces à droite.]
Exemple d'entrée:
02
Exemple de sortie:
01To02|03To01|02To03|
Exemple d'entrée:
04
Exemple de sortie:
02To03|04To02|05To04|03To05|01To03|02To01|04To02|03To04|
Exemple d'entrée:
06
Exemple de sortie:
03To04|05To03|06To05|04To06|02To04|01To02|03To01|05To03|07To05|06To07|04To06|02To04|03To02|05To03|04To05|