Contexte
Manufactoria est un jeu de programmation. Le joueur doit utiliser une forme de langage de programmation bidimensionnel pour effectuer les tâches. Si vous n'en avez jamais entendu parler, la façon la plus simple d'apprendre est d'essayer les premiers niveaux du jeu.
Défi
Votre défi est de créer un programme qui teste la primauté d'un nombre.
L'entrée sera une série de N marqueurs bleus dans la file d'attente. Si N est premier, alors votre programme devrait l'accepter (déplacer le robot jusqu'à la fin). Si N est composite, alors votre programme devrait le rejeter (déposez-le sur le sol quelque part).
Options de soumission
Comme il s'agit d'un défi plus complexe que le défi typique de Manufactoria, j'ai décidé de permettre plus de façons de soumettre vos réponses.
Vanille
J'ai créé un niveau personnalisé 13x13 pour créer et tester des soumissions. Le niveau de test personnalisé est le suivant.
Le jeu ne permet que 8 cas de test à un niveau personnalisé, mais votre création devrait théoriquement être capable de gérer n'importe quel nombre naturel N, limité uniquement par la mémoire disponible. À des fins d'information, les cas de test fournis dans le niveau personnalisé sont les suivants:
1 -> reject
2 -> accept
4 -> reject
5 -> accept
7 -> accept
9 -> reject
11-> accept
15-> reject
Grille étendue
Certains utilisateurs peuvent vouloir plus d'espace qu'une grille 13x13. Voici un lien vers un niveau personnalisé 15x15 en jeu, créé en changeant un nombre dans l'URL:
Malheureusement, les niveaux personnalisés plus importants ne fonctionnent pas, car les cellules supplémentaires sont inaccessibles.
La Manufactoria Esolang
Il y a eu une adaptation de Manufactoria dans un langage basé sur ASCII. Si vous voulez une manière différente de concevoir / tester votre création, ou si vous ne parvenez pas à adapter votre solution finale sur le plateau de jeu, vous pouvez utiliser cet esolang. Vous pouvez trouver des informations sur cet esolang ici:
Il y a quelques différences entre l'esolang et le jeu réel. Par exemple, les traversées de convoyeurs sont traitées différemment. Essayez d'éviter de profiter de ces écarts.
Un moyen plus rapide de tester
Le jeu est très lent en ce qui concerne les programmes qui nécessitent plusieurs milliers d'étapes. Ma solution de preuve de concept a pris 28042 étapes pour en rejeter 15. Même avec l'accélération 50x dans le jeu, cela prend tout simplement trop de temps.
J'ai trouvé ce site Web très utile . Copiez-collez simplement le lien vers votre réponse, et vous pouvez tester votre réponse avec des entrées spécifiques. Le processus en 28042 étapes a pris moins d'une seconde.
Une chose à noter est qu'il dit souvent quelque chose comme "incorrectement accepté" même si votre machine fonctionne correctement. En effet, la page Web ne connaît que les cas de test. Par exemple, cela dirait que ma solution a "mal accepté" le chiffre 3, même si ma machine était en fait correcte.
Comment gagner
Le critère de notation est le nombre de pièces (cellules occupées). C'est du golf de code, donc la soumission avec le moins de pièces l'emporte.
Pour les personnes intéressées, ma solution de référence comprend 96 pièces et s'adapte sur la grille 13x13. Trouver un meilleur algorithme pourrait conduire à des améliorations colossales, car je sais que j'ai utilisé un algorithme sous-optimal.