Para resolver el problema de detención , se le da una descripción de un programa y debe determinar si terminará o no. Nunca puede hacer esto para todos los programas. Sin embargo, para programas como (en brainf *** ):
>
Obviamente se detendrá, y para programas como:
+[]
Obviamente no lo hará. Su desafío es "resolver" el problema de detención para tantos programas como sea posible. Estos programas no usarán .
o ,
, y no tendrán entrada ni salida. Se le dará una descripción del programa y deberá mostrar "Paradas", "No se detiene" o "Desconocido". Cuando su programa emite "Se detiene" o "No se detiene", ha resuelto el programa de entrada. Aquí hay algunos requisitos.
- Debe resolver al menos una cantidad infinita de programas.
- Para cada programa que resuelve, su solución debe ser correcta.
- Solo puede generar 1 de las 3 opciones anteriores.
- Puede suponer que la computadora en ejecución tiene tiempo y memoria infinitos, por lo que XKCD 1266 no funcionaría (la cinta es ilimitada).
- Sin recursos externos.
- No puede usar un lenguaje de programación que realmente pueda resolver el problema de detención .
Es posible que tenga un programa secundario sin código de golf que tome una cadena que sea un programa y genere algún tipo de árbol de sintaxis abstracta si lo desea. Tenga en cuenta que eso no es realmente una puntuación per se, sino cómo determinar si un programa supera a otro.
- Si el programa A resuelve un número infinito de programas que B no, pero B solo resuelve programas finitos o ninguno que A resuelve, A gana automáticamente.
- De lo contrario, el programa con la menor cantidad de caracteres gana. No cuente los espacios en blanco ni los comentarios, así que no ofusque su código.
Consejo: los temporizadores no funcionarán. Verá, para cualquier momento T y una máquina dada, hay una N, de modo que todos los programas más largos que eso tienen que tomar más de tiempo T. Esto significa que un temporizador solo puede lograr la solución de un número finito de programas y, como puede ver arriba, resolver un número finito de programas no ayuda.
>
, ignórelo". Entonces tu cosa sería redundante.
>
s después del final del programa, luego encuentre un programa P en el que S' responda "Desconocido", luego cree una nueva solución que responda correctamente en P con >
s se adjunta y da la respuesta de S 'de lo contrario. Como S 'ignora >
s, entonces P' con cualquier número de >
s añadidos tampoco será resuelto por S '.
>
s se agrega al final (ya que estos detienen si P se detiene) y genera la respuesta de S en todas las demás entradas. Esta nueva solución resuelve infinitamente más problemas que S.