... al menos para alguna definición de "auto-modificación".
La tarea
En este desafío, su tarea es escribir tres cadenas A, By Cque satisfagan las siguientes propiedades.
La cadena
Btiene una longitud de al menos 1.Para cada
n ≥ 0, la cadena es un programa válido (es decir, definición de función o programa ejecutable completo) en el lenguaje de programación de su elección. La repetición de superíndice denota, por lo que este medio de las cuerdas , , , etc. Cada programa tiene una cadena como entrada y devuelve una cadena que como salida.ABnCACABCABBCABBBCPara cualquiera
m, n ≥ 0, si el programa se ejecuta con entrada , vuelve . Para las entradas que no son de esta forma, el programa puede hacer cualquier cosa, incluido el bloqueo.ABmCABnCABm*n+1C
Algunos ejemplos en el formato program(input) -> output:
AC(AC) -> ABC
ABC(AC) -> ABC
ABBBBBC(AC) -> ABC
AC(ABC) -> ABC
AC(ABBBBC) -> ABC
ABC(ABC) -> ABBC
ABBC(ABC) -> ABBBC
ABBBBC(ABBBC) -> ABBBBBBBBBBBBBC
ABBBC(ABBBBBBC) -> ABBBBBBBBBBBBBBBBBBBC
Reglas y puntuación
Su puntaje es la longitud total de AyC , menor puntaje es mejor. Tenga en cuenta que si bien Bno se cuenta para la puntuación, debe producirse por Ay Ccomo en el primer ejemplo.
Las lagunas estándar no están permitidas. Los programas no pueden acceder directa o indirectamente a su propio código fuente (excepto cuando se les da como entrada). Se requiere que identifique las cadenas y A, en su respuesta, de alguna manera, y se le anima a explicar su solución.BC
fuente
