2010-04-29 6 views
5

Selon la spécification,Comment DP et CC changent-ils dans Piet?

blocs de couleur noire et les bords du programme limitent le déroulement du programme. Si l'interpréteur Piet essaie de se déplacer dans un bloc noir ou hors d'un bord, il est arrêté et le CC est basculé. L'interprète tente alors de se déplacer à nouveau de son bloc actuel. S'il échoue une seconde fois, le DP est déplacé dans le sens des aiguilles d'une montre d'un pas. Ces tentatives sont répétées, le CC et le DP étant changés entre deux tentatives. Si, après huit tentatives, l'interpréteur ne peut pas quitter son bloc de couleur actuel, il n'y a pas d'issue et le programme se termine.

À moins que je le lis mal, cela est en contradiction avec le comportement de l'exemple de séquence de Fibonacci ici: http://www.dangermouse.net/esoteric/piet/fibbig1.gif (à partir de: http://www.dangermouse.net/esoteric/piet/samples.html)

Plus précisément, pourquoi le tour DP gauche à (0, 3) ((0,0) étant (haut, gauche)) quand il touche le bord gauche? À ce stade, les deux DP et CC sont à gauche, donc, par ma lecture, la séquence doit alors:

  1. tentative (et l'échec) de quitter le bloc en allant du bord à (0,4),
  2. Bascule CC à DROITE,
  3. Tentative (et échec) de quitter le bloc en quittant le bord en (0,2).
  4. Rotation DP UP,
  5. tentative (et réussir) à laisser le bloc à (1,2) en entrant le bloc blanc à (1,1)

Le comportement indiqué par la trace semble être que DP est tourné tout le chemin, laissant CC à gauche.

Qu'est-ce que j'ai mal compris?

+3

Je ne m'attendrais jamais je verrai la question de Piet sur SOX) –

Répondre

6

Votre analyse semble correcte; l'échantillon est buggé. Le bloc blanc à (1,1) devrait être noir. Vous pouvez le vérifier en saisissant l'image échantillon et en l'exécutant.

Notez que au moins trois des interpreters liés depuis la page de DMM sont bogués - Marc Majcher c'est marqué en tant que tel, les traverses et les sorties de Sylvain Tintillier correctement mais commute le sens de et auberge de la spécification (this est un sans bug version), et PietDev traverse incorrectement les blocs de couleur.

EDIT: d'autres blocs blancs doivent également être noirs, par ex. le bloc à (6,3).

+2

Merci. J'ai passé un bon moment à me demander pourquoi ma mise en œuvre est entrée dans une boucle infinie à ce moment-là. Blanc (6,3) est OK, car à ce moment-là, CC est à gauche, de sorte que le curseur quitte le bloc bleu clair (7,3) & (7,4) en entrant (6,4) de toute façon. –

Questions connexes