Buenas noches, damas y caballeros.
Esta noche, tenemos un desafío de código. Una competencia que se definirá no en la cantidad de puntos (a la Asteroides) sino simplemente si puedes terminarla (a la Zelda). Y en aras de la comparación, la cantidad de bytes (uh ... pero dijiste ...).
Su desafío es componer una quine única que se compila tanto en WhiteSpace como en cualquier otro idioma de su elección. Ambas quines deben tener una salida absolutamente idéntica (que como quine es absolutamente idéntica al código fuente). Su quine debe tener más de 3 bytes de longitud.
Su puntaje es el tamaño de su código fuente en bytes.
Dado que este desafío involucra WhiteSpace, por favor, escape de sus respuestas para que sean claras, preferiblemente en el estilo C. Su puntaje es la fuente original en bytes, no la versión escapada.
Buena suerte.
Respuestas:
Espacio en blanco y Perl,
992975 caracteresBuenas tardes damas y caballeros.
Para empezar, aquí está mi envío codificado en base64, que creo que es la mejor manera de comunicar un gran programa de espacios en blanco. (Realmente no desea utilizar una codificación que deje cualquier espacio en blanco tal como está, por lo que no tiene sentido seleccionar algo más "legible").
Aquí hay un extracto que resalta todas las partes visibles de la fuente.
⇥
se usa para indicar una pestaña y↲
para indicar una nueva línea.Perl fue la elección natural para el segundo idioma en este desafío, siendo uno de los mejores lenguajes de uso general para escribir quines compactas. Mi quine más corto de Perl es de 19 bytes:
- y puedes ver cómo fue la semilla de la mitad Perl del doble quine. Mi mejor quine de espacios en blanco, en comparación, tiene 541 bytes de longitud. (Aunque existen los más cortos, 445 bytes es lo mejor que he visto).
Desde el punto de vista del intérprete de Perl, la primera línea del archivo fuente de la doble quine contiene las dos declaraciones que componen todo el programa propiamente dicho, ya que los contenidos restantes son dos cadenas citadas. La primera cadena es la línea repetida de Perl, y está delimitada por la tercera línea en blanco. La segunda cadena es todo espacio en blanco, y se extiende desde la cuarta línea de la fuente hasta el
0
delimitador en la parte inferior del archivo.Cuando se toma como un programa de espacios en blanco, las primeras cuatro líneas contienen tres instrucciones que son en gran medida inútiles. (Su efecto es insertar dos valores cero en la pila, y luego descartar el segundo). Se incluyen solo para superar con seguridad las nuevas líneas que requiere el programa Perl; el programa real comienza después de eso. En lugar de citar la fuente ilegible, aquí hay una paráfrasis de las instrucciones que componen el programa Whitespace, en un formato similar al ensamblado:
Los números gigantes en la parte superior son lo que los usuarios de Whitespace tenemos que usar en lugar de cadenas reales. No se moleste en intentar ejecutar esto en un intérprete de espacios en blanco que no tenga soporte bignum adecuado.
Finalmente, aquí está el programa nuevamente, pero esta vez con escapes de estilo C, ya que se solicitó específicamente:
fuente