... al menos para alguna definición de "auto-modificación".
La tarea
En este desafío, su tarea es escribir tres cadenas A
, B
y C
que satisfagan las siguientes propiedades.
La cadena
B
tiene 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.ABnC
AC
ABC
ABBC
ABBBC
Para 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.ABmC
ABnC
ABm*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 A
yC
, menor puntaje es mejor. Tenga en cuenta que si bien B
no se cuenta para la puntuación, debe producirse por A
y C
como 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.B
C