Su tarea es crear el programa más corto (A) que genera otro programa (B) con los bytes más únicos, que a su vez genera el programa original (A). Esencialmente, estás jugando a la mitad de un par de programas de ouroboros (también conocido como quine iterativo periódico) y jugando boliche a la otra mitad. A y B pueden estar en diferentes idiomas.
Reglas y puntuación
Tu puntaje final es <number of unique bytes in B> / <number of bytes in A>
. La puntuación más alta gana. Cabe señalar que la puntuación máxima teórica es 256.
- El programa A debe tener al menos un byte de longitud
- El programa B no puede consistir completamente en no-ops, es decir, al menos un carácter debe afectar la salida de alguna manera.
- Las reglas estándar de quines se aplican a ambos programas. En particular, las cuotas de error no están permitidas en ninguno de los casos.
En aras de la coherencia del formato de respuesta, comience su respuesta con algo como esto:
# <Language for A> & <Language for B>, Score: <B score> / <A score> = <combined score>
code-golf
code-challenge
quine
code-bowling
Carne de res
fuente
fuente
aaaaa
tiene un byte único yabcde
tiene 5 bytes únicos.Respuestas:
Japt y Japt , Puntuación: 255/38 = 6.71
Programa A :
El programa B tiene más de 8kB de longitud, tanto que el enlace se rompe, por lo que no pegaré todo. Aquí hay una muestra:
No pude encontrar una manera de hacer que un
NUL
byte funcione, por eso el programa B solo tiene 255 caracteres únicos. El programa B consiste esencialmente en 255 copias de un solo programa, donde se cambia un solo byte irrelevante cada vez, y se ignoran las primeras 254 ejecuciones.Para la explicación, comenzaré con esta versión simplificada de A para que la B resultante sea más fácil de discutir.
Este programa se basa en la quine Japt básica con capacidad de carga útil . La cadena al comienzo contiene un duplicado del resto del programa,
iQ ²
inserta una cita y duplica para crear una representación de cadena de todo el programa, y luego se¯23
recorta a sí mismo y todo lo que sigue. La cadena resultante es un programa que genera el Programa A :Me referiré a esta cadena como
U
.La última línea de A se duplica
U
varias veces con un pequeño cambio cada vez. Específicamente, para cada númeroX
en el rango[1...3]
, genera"#c" + U
dóndec
está el carácter con charcodeX
. El comportamiento predeterminado de Japt es generar esas cadenas sin comillas y separadas por comas, por lo que esta es la salida de nuestra A simplificada (tenga en cuenta que hay un byte no imprimible entre cada uno#
y"iQ
:Llamaremos a esto B simplificado .
B simplificado tiene una estructura simple, alternando entre
#c
yU
. Afortunadamente para esta respuesta, cada uno#c
, yU
se trata como separados por una coma, y en esta situación el comportamiento de que es todo excepto el últimoU
no tiene ningún efecto en la salida. La única porción de B simplificado que afecta la salida es esta:Lo cual es idéntico al
U
que ya conocemos salidas A. simplificadaLa única diferencia entre A simplificado y Programa A es que, en lugar de generar copias para el rango,
[1...3]
el programa real genera copias para el rango[1...256]
. Eso da como resultado 256 versiones de#c
cada una de las cuales tiene un carácter diferente, aunque la última versión "Ā" es un carácter de varios bytes, por lo que no agrega bytes únicos, pero todo, excepto el último,U
aún se ignora.fuente
27
necesita ajustar cada vez que se guardan bytes, pero aparte de eso parece que funciona.Programa A, Gol> <> , 256/20 bytes = 12.8
Pruébalo en línea!
Programa B, Gol> <>
Pruébalo en línea!
El programa alterna entre la salida de sí mismo seguido de cada byte y solo la salida.
Explicación:
fuente
Programa A: 05AB1E , puntaje:
256/41256/31 bytes = 8.258 ...Pruébalo en línea.
Programa B: 05AB1E
Pruébalo en línea.
Explicación:
La quine más corta para 05AB1E es esta:
0"D34çý"D34çý
( 14 bytes ) proporcionada por @OliverNi . Mi respuesta usa una versión modificada de ese quine agregando₅Ýç'q†vy27ǝD}J
.El programa B terminará tan pronto como llegue al
q
, por lo que el programa B real es:Todo después de eso se ignora, y la parte superior de la pila (
0"D34çý₅Ýç'q†22ǝ"D34çý₅Ýç'q†22ǝ
) se emite implícitamente.fuente