7 , 23 caracteres, 9 bytes
54340045141332401057403
Pruébalo en línea!
Este es un desafío bastante difícil en un lenguaje que consiste completamente en dígitos, pero lo logré ...
Esto es solo 9 bytes en la codificación de 7. (Estrictamente hablando, son 8⅜ bytes (23 × ⅜ - ¼ porque se pueden omitir los dos últimos 1 bits finales), pero por primera vez, el requisito de PPCG de redondear a un número entero de bytes es realmente una ventaja porque significa que los bits extra de 1 son necesarios y, por lo tanto, no están prohibidos por la pregunta).
00000000: b1c0 2530 b6a0 22f8 1f ..%0.."..
El principal desafío de escribir este programa en 7 fue jugar golf a menos de 10 bytes (como escribir 7 sin usar 0
o 1
es bastante difícil). Esto usa la misma estructura que el programa estándar "Hello world":
5434004514133240105 7 403
5434004514133240105 comandos 0-5 agregar literales al espacio de datos
7 comenzar una nueva sección de espacio de datos
403 otro literal agregado al espacio de datos
{implícito: evalúa la última sección como comandos}
4 intercambie las secciones primera y segunda con una sección vacía entre
6 reconstruya los comandos que crearían la salida de la primera sección
3 (+ algunos otros efectos que no nos interesan)
En otras palabras, comenzamos creando dos secciones del espacio de datos; tenemos dos literales, cada uno de los cuales empuja una secuencia de comandos allí. La segunda sección (se empujan al estilo de pila, por lo que primero se empuja = último pop) es una secuencia de comandos bastante arbitraria, pero se empuja usando la secuencia de comandos 5434004514133240105
(produciendo así la secuencia de datos 5434664574733246765
; cuando discuto 7 en texto, normalmente uso una fuente normal para un comando que empuja un literal y negrita para el correspondiente literal resultante). La primera sección se empuja usando la secuencia de comandos 403
, produciendo 463
. Luego, la primera sección se copia nuevamente al programa (un comportamiento implícito de 7).
El 463
ahora está compuesto por comandos (en negrita) que hacen algo de inmediato, en lugar de comandos (sin negrita) que solo empujan literales. 4
reorganiza las secciones para obtener nuestro "literal de cadena" en la primera sección. Luego 0
realiza la operación por la que 7 es más conocido: tomar una sección de espacio de datos y reconstruir la secuencia de comandos que es más probable que la haya creado. En el caso en el que la secuencia de comandos original de todo 0
- 5
, esto es 100% exacto (como era de esperar, ya que esas órdenes puramente empujan los datos y por lo tanto dejan evidencia obvia de lo que hicieron), y así obtenemos la secuencia original 5434004514133240105
de vuelta. Finalmente, lo 3
imprime.
Entonces, lo que queda por ver aquí es la codificación de la cadena. Esto tiene su propio lenguaje específico de dominio:
5434004514133240105
5 change encoding: 6 bits per character
43 select character set: digits and common symbols
40 '9'
04 space
51 select character set: uppercase letters
4133240105 'B' 'Y' 'T' 'E' 'S'
(No hay un "conjunto de caracteres selectos: letras minúsculas" en el conjunto de caracteres "dígitos y símbolos comunes"; primero debe usar un conjunto de caracteres diferente, por lo que necesitaba usar mayúsculas para jugar al golf lo suficientemente corto como para caber debajo de los 10 límite de bytes)