Écrivez un programme Manufactoria qui acceptera la bande d'entrée vide. Mais ne le faites pas rapidement! Je veux dire, écrivez le programme rapidement, mais ne le laissez pas s'exécuter rapidement. Plus le programme est lent, mieux c'est, tant qu'il se termine finalement. L'exemple de programme ci-dessous prend 3:51 (le "temps total" rapporté par le simulateur).
Votre programme démarre avec la bande vide. Il doit griffonner un peu, mais finalement atteindre le carré de sortie. Vous pouvez laisser des données sur la bande si vous le souhaitez. Le programme le plus lent sur la planche 7x7 Manufactoria gagne!
Votre flèche droite est votre amie, elle accélère le simulateur.
Points bonus pour planter le simulateur!
manufactoria
busy-beaver
Keith Randall
la source
la source
Réponses:
~ 10 23 itérations
~ 10 15 itérations~ 10 8 itérationshttp://pleasingfungus.com/Manufactoria/?lvl=32&code=g9:7f2;b12:8f2;p13:8f5;p11:8f3;r14:8f0;q11:10f3;q13:7f1;y13:9f1;r10:10f1 ; c12: 9f2; c9: 9f2; i11: 9f7; i10: 9f4; c9: 8f3; i10: 8f2; c14: 9f0; c15: 9f0; c15: 8f3; c15: 7f3; c14: 7f2; g12: 7f0; c11 : 7f3; c10: 7f2; q9: 6f7; r10: 6f1; r9: 5f3; c11: 6f0; r10: 5f2; r11: 5f1; r9: 4f3; r10: 4f0; r11: 4f0; y12: 5f2; y13: 5f2 ; y14: 5f3; y14: 6f0; y13: 6f0; y12: 6f0; & ctm = Slow_Accepter!; Generate_the_slowest_possible_accepting_machine;:; 7; 3; 0 ;
La machine est essentiellement un compteur kilométrique fonctionnant en base trois, utilisant les symboles rouge, bleu et jaune pour représenter les chiffres 0, 1 et 2 respectivement. Le symbole vert est utilisé pour marquer la fin du numéro. Au début, la bande est initialisée avec 49 symboles rouges. Cela se fait par les pièces dans les trois premières rangées de la machine. Les quatre lignes du bas gèrent la tâche d'incrémentation du nombre dans une boucle. À chaque itération, les deux cellules de branche sur le côté gauche déterminent comment appliquer l'incrément au nombre actuel, puis les cellules de branche sur le côté droit copient les chiffres restants non affectés.
Auparavant, j'ai essayé d'estimer le temps de fonctionnement de la machine, si elle était autorisée à fonctionner jusqu'à la fin, mais à ce niveau, il est plus logique de simplement suivre le nombre d'itérations. En gros, il faut environ une minute pour terminer une itération - mais même si cela a pris une seconde, cela ne ferait que réduire le temps de fonctionnement d'un seul ordre de grandeur.
la source
603: 25
Test en ligne
Je relisais les questions de Manufactoria aujourd'hui, et j'ai soudain eu une idée qui ralentirait considérablement le processus: au lieu de simplement avoir 50 valeurs et changer les couleurs 3 fois, le nouveau programme fait cela, mais après cela, il diminue la nombre de valeurs par 1, et passe à nouveau par le changement de couleur, jusqu'à ce qu'il y ait une bande vide à laquelle le programme s'arrête.
La file d'attente ne stockera pas plus de 50 valeurs à la fois, il est donc inutile d'essayer de pousser trop de valeurs sur la bande - elles sont tout simplement supprimées immédiatement. Comme auparavant, les bandes transporteuses visent à maximiser le temps nécessaire au fonctionnement de la chose. En fait, il y a eu un ajustement minimal pour obtenir une augmentation considérable de l'exécution.
Mais toujours loin de la réponse de la boîte à pain .
la source
33:33
J'ai travaillé dessus pendant un bon moment (la volatilité a placé la barre assez haut), mais une fois que j'ai atteint 33:33, j'ai pensé que c'était un bon moment pour s'arrêter.
La stratégie est assez simple: remplissez la bande d'une couleur, puis d'une autre, puis d'une autre, et essayez toujours de parcourir autant de cellules que possible entre chaque écriture (ou groupe d'écritures).
Je suis sûr qu'il existe des moyens de trouver que nous pouvons aller beaucoup plus loin avec cela.
Lien de niveau
la source