fundo
Manufactoria é um jogo sobre programação. O jogador deve usar uma forma de linguagem de programação bidimensional para concluir tarefas. Se você nunca ouviu falar, a maneira mais fácil de aprender é experimentar os primeiros níveis do jogo.
Desafio
Seu desafio é criar um programa que teste a primalidade de um número.
A entrada será uma série de N marcadores azuis na fila. Se N for primo, seu programa deve aceitá-lo (mova o robô até o fim). Se N for composto, seu programa deve rejeitá-lo (solte-o no chão em algum lugar).
Opções de envio
Como esse é um desafio mais complexo que o desafio típico de Manufactoria, decidi permitir mais maneiras de enviar suas respostas.
Baunilha
Eu criei um nível personalizado 13x13 para criar e testar envios. O nível de teste personalizado é o seguinte.
O jogo permite apenas 8 casos de teste em um nível personalizado, mas sua criação deve teoricamente ser capaz de lidar com qualquer número natural N, limitado apenas pela memória disponível. Para fins informativos, os casos de teste fornecidos no nível customizado são os seguintes:
1 -> reject
2 -> accept
4 -> reject
5 -> accept
7 -> accept
9 -> reject
11-> accept
15-> reject
Grade expandida
Alguns usuários podem querer mais espaço do que uma grade 13x13. Aqui está um link para um nível personalizado de 15x15 no jogo, criado pela alteração de um número no URL:
Infelizmente, níveis personalizados maiores não funcionam, pois as células adicionais são inacessíveis.
The Manufactoria Esolang
Houve uma adaptação do Manufactoria em uma linguagem baseada em ASCII. Se você deseja uma maneira diferente de projetar / testar sua criação, ou se não conseguir ajustar sua solução final ao tabuleiro de jogo, use este esolang. Você pode encontrar informações sobre este esolang aqui:
Existem algumas discrepâncias entre o esolang e o jogo real. Por exemplo, os cruzamentos do transportador são tratados de maneira diferente. Tente evitar tirar proveito dessas discrepâncias.
Uma maneira mais rápida de testar
O jogo é muito lento quando se trata de programas que levam vários milhares de etapas para serem concluídos. Minha solução de prova de conceito levou 28042 etapas para rejeitar 15. Mesmo na aceleração de 50x no jogo, isso simplesmente leva muito tempo.
Encontrei este site muito útil . Simplesmente copie e cole o link da sua resposta e poderá testá-la com entradas específicas. O processo de 28042 etapas levou menos de um segundo.
Um aspecto a ser observado é que geralmente diz algo como "aceito incorretamente", mesmo que sua máquina funcione corretamente. Isso ocorre porque a página da Web conhece apenas os casos de teste. Por exemplo, diria que minha solução "aceitou incorretamente" o número 3, mesmo que minha máquina estivesse realmente correta.
Como ganhar
O critério de pontuação é o número de partes (células ocupadas). Isso é código de golfe, então a submissão com o menor número de partes vence.
Para os interessados, minha solução de benchmark possui 96 peças e se encaixa na grade 13x13. Encontrar um algoritmo melhor pode levar a melhorias colossais, pois sei que usei um algoritmo abaixo do ideal.