Usted debe escribir un programa o función que, cuando se les da un no vacío cadena de S de N caracteres ASCII imprimibles † , da salida a un programa que va a salir con el código de salida C , donde C es el punto de código ASCII en la posición 0 en S . Este programa se escribe lo hará, además, un programa de salida P , de tal manera que, cuando se ejecuta, se sale con código de salida C ' , donde C' es el punto de código ASCII en la posición 1 en S . El programa P generará otro programa P ' . Este proceso se repite hasta que no quedan caracteres en S. Una vez hecho esto, no debe generar nada, seguido de una nueva línea opcional; y debe salir con el código de salida 0.
† Los caracteres entre 0x20e 0x7einclusive.
Algunas reglas más:
- Los programas auto modificables no están permitidos: debe enviar la fuente a STDOUT (o, inicialmente, devolver el valor)
- No puede leer su propio código fuente.
El programa más corto de este tipo en bytes ganará.
Para algunas pruebas rudimentarias, se puede usar este script ruby . (El primer argumento es la forma en que invocas el script, el segundo es el programa y el tercero es la cadena de entrada).
Ejemplo hipotético
Digamos que el programa es FOO. Cuando se le da la cadena "ABC", sale BARA. Este programa sale con código 65y salidas BARB. Esto a su vez sale con código 66y salidas BARC. Este programa sale con código 67y salidas BAR!. Esto no genera nada y sale con código 0.
33 throwarrojar un número arbitrario. Utiliza negativos para el nivel del sistema operativo y el desplazamiento es -512. Tampoco mucho, pero estoy buscando aquí: complang.tuwien.ac.at/forth/gforth/Docs-html/…
0es el éxito tio.run/nexus/…