Petit challenge : FF XIII-2 Labyrinthe temporel

  • Initiateur de la discussion Initiateur de la discussion Compte Supprimé 979
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

Compte Supprimé 979

Guest
Bonjour à tous 😉

Je suis fana de RPG et notamment de Final Fantasy 😱

Dans la version XIII-2 il peut arriver de tomber sur l'énigme du labyrinthe temporel 🙁

Qui est : une plateforme ou se trouve Plusieurs cadrans contenant chacun un chiffre
Chaque chiffre renvoi vers le Xième cadran vers la droite et vers la gauche
Le but est de faire tous les cadrans (une seule fois uniquement)

Je me suis dis qu'avec Excel et un peu de VBA j'arriverais peut-être à trouver la solution ...
J'ai essayé quelques trucs, mais là j'avoue que je calle 😛

Alors si cela vous dis de tenter votre chance 😀

A+
 

Pièces jointes

Re : Petit challenge : FF XIII-2 Labyrinthe temporel

Bonsoir BrunoM,

Je suis loin d'être sur d'avoir tout compris

Chaque chiffre renvoi vers le Xième cadran vers la droite et vers la gauche

Faut-il lire "Chaque chiffre renvoi vers le Xième cadran vers la droite OU vers la gauche" ?

Si c'est le cas, une proposition avec le code ci-dessous. Quelques résultats avec les cadrans 5211334125 :
2G10D5D8D9G7D1D6G3D4
10G5D8D9G7D1D6G3G2D4
8D9G7D1G6G3D4D5G2G10
4G3G2G10D5D8D9G7D1G6

Interprétation du premier résultat :
départ cadran 2, aller à gauche, on arrive sur le cadran 10, aller à droite, on arrive sur le cadran 5 etc...

Cordialement

KD

VB:
Option Explicit

Sub test()
    Call Lab(17, 3, 10)
End Sub

Sub Lab(r&, c%, n%)
'r et c 1ère cellule des chiffres donnés (écrits en ligne)
' n nombre de chiffre
Dim Tb%(), i%, a%, d As Boolean, s$, b%, e%
    ReDim Tb(1 To 10, 1 To 2)
    For i = 1 To n
        Tb(i, 1) = Cells(r, c).Offset(0, i - 1)
    Next i
    Randomize
Refaire:
    For i = 1 To n
        Tb(i, 2) = 0
    Next i
    a = Int(n * Rnd + 1): Tb(a, 2) = 1: e = 1: d = True: s = a
    Do
        b = Int(2 * Rnd)
        If b = 0 Then
            b = -1
            s = s & "G"
        Else
            s = s & "D"
        End If
        a = a + b * Tb(a, 1)
        Do
            If a > n Then
                a = a - n
            ElseIf a < 1 Then
                a = a + n
            End If
        Loop Until a > 0 And a <= n
        If Tb(a, 2) = 0 Then
            Tb(a, 2) = 1: e = e + 1: s = s & a
        Else
            d = False
        End If
    Loop Until Not d Or e = n
    If d Then MsgBox s Else GoTo Refaire
End Sub
 
Re : Petit challenge : FF XIII-2 Labyrinthe temporel

Salut KenDev,

Merci pour ton aide 😉
Désolé il est vrai que je n'ai pas été assez explicite

Comme il s'agit de cadran d'horloge, il y a 2 aiguilles et chaque chiffre présent sur l'horloge
renvoie à gauche et à droite du nombre figurant dans le cadran

Le chiffre 2 renvoie à 2 cadrans à droite pour une aiguille
et 2 cadrans à gauche pour l'autre aiguille

Le but est donc de passer par tous les cadrans 1 seule fois

Ton code ne semble pas donner les bonne réponses !?

A+
 
Re : Petit challenge : FF XIII-2 Labyrinthe temporel

Bonsoir Bruno,

Le code proposé résous le problème suivant : A partir d'un cadran au hasard, regarder le chiffre du cadran (disons n), se déplacer à droite OU à gauche de n cases, répéter jusqu'à ce que tous les cadrans soit parcourus une fois et une seule. Ce n'est donc pas ce que tu voulais.

Je ne comprends toujours pas bien. On a donc 10 (ou n) cadrans et 2 aiguilles. Tel que je comprends :
- Si je suis sur un cadran sur lequel pointe une aiguille je me déplace selon le sens de l'aiguille (disons gauche pour la petite, à définir).
- Si je suis par exemple sur un cadran sur lequel ne pointe aucune aiguille que fais-je ?
Il y a quelque chose qui m'échappe...

Pourrais tu préparer un schéma simplifié genre avec 4 cadrans 2 aiguilles et indiquer un chemin gagnant en justifiant chaque mouvement ?

Cordialement

KD
 
Re : Petit challenge : FF XIII-2 Labyrinthe temporel

Re,

Il est vrai que l'explication n'est pas simple,
Cadrans dans le sens des aiguilles : 5-2-1-1-3-3-4-1-2-5

la seule solution possible pour l'exemple de mon fichier est
Solution : [1]2 → [9]5 → [4]3 → [7]1 → [8]2 → [6]4 → [0]5 → [5]3 → [2]1 → [3]1

Cadran n° 1 chiffre 2
2 pas vers la gauche = Cadran n° 9 chiffre 5
5 pas vers la droite = Cadran n° 4 chiffre 3
Etc ...

Ci-joint un lien qui pourrais peut-être t'aider à la compréhension et à ce que j'aimerais faire sur Excel
Ce lien n'existe plus

Au plaisir et merci encore pour ton aide
 
Dernière modification par un modérateur:
Re : Petit challenge : FF XIII-2 Labyrinthe temporel

Re,

Il semblerait donc que ma ma macro fonctionne malgré tout. Il y a juste juste une différence dans la présentation du résultat entre nous.

Les cadrans 5-2-1-1-3-3-4-1-2-5
Ta solution : [1]2 → [9]5 → [4]3 → [7]1 → [8]2 → [6]4 → [0]5 → [5]3 → [2]1 → [3]1
'Ma' solution : 2G10D5D8D9G7D1D6G3D4

Tu numérotes [1] le cadran ou l'on démarre, je numérote 1 le premier cadran dans l'ordre ou ils sont écrit sur la feuille. Donc 1947860523 chez toi est bien la même chose que 2-10-5-8-9-7-1-6-3-4 chez moi. puisque qu'on part du 2ème cadran dans cette solution.

Par contre, en modifiant légèrement la sub pour qu'elle affiche sans doublons, à l'infini, toutes les solutions trouvées, elle arrive à 20 solutions:
2G10G5D8D9G7D1D6G3D4
10G5D8D9G7D1G6G3G2D4
4G3G2G10G5D8G7D1D6D9
10G5D8D9G7D1D6G3G2D4
10D5D8D9G7D1D6G3G2D4
4G3G2G10D5D8D9G7D1D6
4G3G2G10D5D8G7D1G6D9
2G10D5D8D9G7D1D6G3D4
2G10D5D8D9G7D1G6G3D4
4D5D8D9G7D1G6G3G2G10
4G3G2G10G5D8G7D1G6D9
8D9G7D1G6G3D4D5G2G10
4G3G2G10D5D8G7D1D6D9
10D5D8D9G7D1G6G3G2D4
2G10G5D8D9G7D1G6G3D4
8D9G7D1D6G3D4D5G2G10
4G3G2G10G5D8D9G7D1G6
4G3G2G10G5D8D9G7D1D6
4G3G2G10D5D8D9G7D1G6
4D5D8D9G7D1D6G3G2G10
En sachant qu'on peut avoir la même suite de cadrans avec des directions différentes. (Une valeur 5 dans une optique 10 cadrans, que l'on aille à gauche ou à droite renvoie au même cadran.

Ce qui m'étonne toujours : ou se sert-on des aiguilles ? Si les 19 autres solutions sont fausses : pourquoi ?

Rappel cadrans de 1 à 10 : 5-2-1-1-3-3-4-1-2-5
Exemple pour la 2ème (10G5D8D9G7D1G6G3G2D4).solution
10ème cadran -> valeur 5 -> allons à gauche -> on arrive au...
5ème cadran -> valeur 3 -> allons à droite -> on arrive au...
8ème cadran -> valeur 1 -> allons à droite -> on arrive au...
9ème cadran -> valeur 2 -> allons à gauche -> on arrive au...
7ème cadran -> valeur 4 -> allons à droite -> on arrive au...
1er cadran -> valeur 5 -> allons à gauche -> on arrive au...
6ème cadran -> valeur 3 -> allons à gauche -> on arrive au...
3ème cadran -> valeur 1 -> allons à gauche -> on arrive au...
2ème cadran -> valeur 2 -> allons à droite -> on arrive au...
4ème cadran

Cordialement

KD
 
Re : Petit challenge : FF XIII-2 Labyrinthe temporel

Re,

Merci et BRAVO mon cher KenDev 😀

Si on reprends ta 1ère solution : 2G10G5D8D9G7D1D6G3D4
2G = cadran 10 => valeur 5
10G = cadran 5 => valeur 3
5D = cadran 8 => valeur 1
8D = cadran 9 => valeur 2
9G = cadran 7 => valeur 4
7D = cadran 1 => valeur 5
1D = cadran 6 => valeur 3
6G = cadran 3 => valeur 1
3D = cadran 4
Solution OK

3ème solution : 4G3G2G10G5D8G7D1D6D9
4G = cadran 4 => valeur 1
3G = cadan 3 => valeur 1
2G = cadran 2 => valeur 2
10G = cadran 10 => valeur 5
5D = cadran 5 => valeur 3
8G = cadran 8 => valeur 1
7D = cadran 7 => valeur 4
1D = cadran 1 => valeur 5
6D = cadran 6 => valeur 3
9 = cadran 9
Solution Ok

Tu as bien trouvé la solution ... j'espère que tu voudras bien m'excuser pour avoir douté
mais nous n'avions pas la même notion de numérotation et j'étais perdu 😱

Comment tu fais pour trouver aussi facilement 😕

En tout cas chapeau bas Mon Seigneur
desesp.gif


Je vais enfin arrêter de galérer lors des égnimes 😉

Tu as fait une petite modif sur le code initial, peux-tu nous mettre le code final STP

Au plaisir
 
Re : Petit challenge : FF XIII-2 Labyrinthe temporel

bonjour Bruno,

j'espère que tu voudras bien m'excuser pour avoir douté
Jamais je ne pardonnerai ! Jamais ! (Aimé Jacquet, 12 juillet 1998)

Tu as fait une petite modif sur le code initial, peux-tu nous mettre le code final STP
Il n'en est pas question.

Comment tu fais pour trouver aussi facilement 😕
Ben c'est pas moi, c'est Excel. En estimant que le nombre de chemins possibles n'était pas énorme, j'y suis allé à la brutale : on fonce dans le tas au hasard.

Cordialement

KD


Attention, les solutions s'écrivent sous la cellule contenant la valeur du 1er cadran.
VB:
Option Explicit

Sub test()
    Call Lab(17, 3, 10)
End Sub

Sub Lab(r&, c%, n%)
'r et c 1ère cellule des chiffres donnés (écrits en ligne)
' n nombre de chiffre
Dim Tb%(), i&, a%, d As Boolean, s$, b%, e%, rw&

    rw = r 'ligne d'écriture
    ReDim Tb(1 To n, 1 To 2) '1->valeur des cadrans, 2->déjà parcouru ?
    For i = 1 To n
        Tb(i, 1) = Cells(r, c).Offset(0, i - 1)
    Next i
    Randomize
Refaire:
    'RAZ 2ème dimension
    For i = 1 To n
        Tb(i, 2) = 0
    Next i
    'cadran de départ
    a = Int(n * Rnd + 1): Tb(a, 2) = 1
    'compteur, validité, chaine résultat
    e = 1: d = True: s = a
    'traitement
    Do
        'sens de déplacement
        b = Int(2 * Rnd)
        If b = 0 Then
            b = -1
            s = s & "G"
        Else
            s = s & "D"
        End If
        'cadran d'arrivée
        a = a + b * Tb(a, 1)
        'gestion tour d'horloge dépassé
        Do
            If a > n Then
                a = a - n
            ElseIf a < 1 Then
                a = a + n
            End If
        Loop Until a > 0 And a <= n
        'cadran déjà parcouru ?
        If Tb(a, 2) = 0 Then
            Tb(a, 2) = 1: e = e + 1: s = s & a
        Else
            d = False
        End If
    Loop Until Not d Or e = n
    'solution valide ?
    If d Then
        '1ere occurence ?
        For i = r + 1 To rw
            If Cells(i, c) = s Then
                d = False
                Exit For
            End If
        Next i
        'écriture
        If d Then
            rw = rw + 1
            Cells(rw, c) = s
        End If
    End If
    'etc.
    GoTo Refaire
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour