Antecedentes
Manufactoria es un juego sobre programación. El jugador debe usar una forma de lenguaje de programación bidimensional para completar las tareas. Si nunca has oído hablar de él, la forma más fácil de aprender es probar los primeros niveles del juego.
Desafío
Su desafío es crear un programa que pruebe la primalidad de un número.
La entrada será una serie de N marcadores azules en la cola. Si N es primo, entonces su programa debería aceptarlo (mover el robot hasta el final). Si N es compuesto, entonces su programa debería rechazarlo (colóquelo en el piso en alguna parte).
Opciones de envío
Dado que este es un desafío más complejo que el desafío típico de Manufactoria, he decidido permitir más formas de enviar sus respuestas.
Vainilla
He creado un nivel personalizado de 13x13 para crear y probar envíos. El nivel de prueba personalizado es el siguiente.
El juego solo permite 8 casos de prueba en un nivel personalizado, pero su creación debería ser teóricamente capaz de manejar cualquier número natural N, limitado solo por la memoria disponible. Para fines informativos, los casos de prueba proporcionados en el nivel personalizado son los siguientes:
1 -> reject
2 -> accept
4 -> reject
5 -> accept
7 -> accept
9 -> reject
11-> accept
15-> reject
Rejilla Expandida
Algunos usuarios pueden querer más espacio que una cuadrícula de 13x13. Aquí hay un enlace a un nivel personalizado de 15x15 en el juego, creado al cambiar un número en la URL:
Lamentablemente, los niveles personalizados más grandes no funcionan, ya que las celdas adicionales son inaccesibles.
La Manufactoria Esolang
Ha habido una adaptación de Manufactoria a un lenguaje basado en ASCII. Si desea una forma diferente de diseñar / probar su creación, o si no puede ajustar su solución final en el tablero de juego, puede usar este esolang. Puede encontrar información sobre este esolang aquí:
Hay algunas discrepancias entre el esolang y el juego real. Por ejemplo, los cruces de transportadores se manejan de manera diferente. Intente evitar aprovechar estas discrepancias.
Una forma más rápida de probar
El juego es muy lento cuando se trata de programas que requieren varios miles de pasos para completar. Mi solución de prueba de concepto tomó 28042 pasos para rechazar 15. Incluso a una velocidad de 50x en el juego, eso simplemente lleva demasiado tiempo.
Encontré este sitio web muy útil . Simplemente copie y pegue el enlace a su respuesta, y puede probar su respuesta con entradas específicas. El proceso de 28042 pasos tomó menos de un segundo.
Una cosa a tener en cuenta es que a menudo dice algo como "incorrectamente aceptado" incluso si su máquina funciona correctamente. Esto se debe a que la página web solo conoce los casos de prueba. Por ejemplo, diría que mi solución "aceptó incorrectamente" el número 3, a pesar de que mi máquina era realmente correcta.
Cómo ganar
El criterio de puntuación es el número de partes (celdas ocupadas). Este es el código de golf, por lo que gana la presentación con la menor cantidad de partes.
Para aquellos interesados, mi solución de referencia tiene 96 partes y cabe en la cuadrícula de 13x13. Encontrar un algoritmo mejor podría conducir a mejoras colosales, ya que sé que usé un algoritmo subóptimo.
fuente