Para resolver o problema da parada, você recebe uma descrição de um programa e deve determinar se ele terminará ou não. Você nunca pode fazer isso em todos os programas. No entanto, para programas como (no brainf *** ):
>
Obviamente, ele será interrompido e para programas como:
+[]
Obviamente não. Seu desafio é "resolver" o problema da interrupção para o maior número possível de programas. Esses programas não usarão .
ou ,
não terão entrada ou saída. Você receberá uma descrição do programa e deve gerar "Paradas", "Não pára" ou "Desconhecido". Quando o seu programa gera "Paradas" ou "Não pára", você resolveu o programa de entrada. Aqui estão alguns requisitos.
- Ele deve resolver pelo menos uma quantidade infinita de programas.
- Para cada programa que resolve, sua solução deve estar correta.
- Você só pode enviar 1 das 3 opções acima.
- Você pode assumir que o computador em execução possui tempo e memória infinitos, portanto o XKCD 1266 não funcionaria (a fita é ilimitada).
- Nenhum recurso externo.
- Você não pode usar uma linguagem de programação que possa realmente resolver o problema de parada .
Você pode ter um programa paralelo sem código que pega uma string que é um programa e gera algum tipo de árvore de sintaxe abstrata, se desejar. Observe que isso não é realmente uma pontuação propriamente dita, mas como determinar se um programa supera outro.
- Se o programa A resolve um número infinito de programas que B não faz, mas B resolve apenas programas finitos ou inexistentes que A resolve, A vence automaticamente.
- Caso contrário, o programa com o menor número de caracteres vence. Não conte espaços em branco ou comentários; portanto, não ofusque seu código.
Dica: os temporizadores não funcionam. Você vê, para qualquer momento T e para uma determinada máquina, existe um N, de modo que todos os programas mais longos que esse precisam levar mais que T tempo. Isso significa que um timer só pode alcançar a solução de um número finito de programas e, como você pode ver acima, resolver um número finito de programas não ajuda.
>
, ignore". Então sua coisa seria redundante.
>
s após o final do programa, depois encontre um programa P no qual S' responda "Desconhecido" e crie uma nova solução que responda corretamente em P com >
s anexado e fornece a resposta de S 'caso contrário. Como S 'ignora >
s, P com qualquer número de >
s acrescentado também não será resolvido por S'.
>
s adicionado ao final (desde que estes parem se P parar) e gera a resposta de S em todas as outras entradas. Esta nova solução resolve infinitamente mais problemas do que S.