El código de golf siempre involucra algunas respuestas que doblan las reglas más o menos al romper las restricciones que los retadores dieron por sentado o simplemente no pensaron y no mencionaron en las reglas. Una de estas lagunas interesantes es la posibilidad de generar más de lo que el desafío requiere para obtener un mejor resultado.
Llevando esto a los extremos, podemos escribir un solucionador de golf de código universal que imprima la salida deseada, si no le importa, podría llevar años y generar muchas otras cosas antes y después.
Todo lo que necesitamos para generar es una secuencia que garantice que contenga todas las subsecuencias posibles. Para este código de golf, esta será la secuencia Ehrenfeucht-Mycielski :
La secuencia comienza con los tres bits 010; cada dígito sucesivo se forma al encontrar el sufijo más largo de la secuencia que también aparece antes dentro de la secuencia y complementar el bit que sigue a la aparición anterior más reciente de ese sufijo.
Cada subsecuencia finita de bits ocurre contiguamente, infinitamente a menudo dentro de la secuencia
Los primeros dígitos de la secuencia son:
010011010111000100001111 ... (secuencia A038219 en OEIS ).
Combinando 8 bits de la secuencia en un byte, obtendremos una salida ASCII que podemos enviar a la pantalla o a un archivo y que contiene todas las salidas finitas posibles . El programa generará partes de pi, la letra de "Nunca te daré por vencido" , un bonito arte ASCII, su propio código fuente y todo lo demás que quieras que salga.
Para probar la corrección, aquí hay hashes para los primeros 256 bytes de la secuencia:
MD5: 5dc589a06e5ca0cd9280a364a456d7a4
SHA-1: 657722ceef206ad22881ceba370d32c0960e267f
Los primeros 8 bytes de la secuencia en notación hexadecimal son:
4D 71 0F 65 27 46 0B 7C
Reglas:
Su programa debe generar la secuencia Ehrenfeucht-Mycielski (nada más), combinando 8 bits a un carácter byte / ASCII.
El programa más corto (recuento de personajes) gana. Resta 512 de tu recuento de caracteres si logras generar la secuencia en tiempo lineal por byte generado .