Su tarea es escribir un programa de computadora no vacío compuesto por alguna secuencia de bytes. Si elegimos un byte particular en el programa y eliminamos todas las instancias del programa, el programa modificado debería generar el byte eliminado.
Por ejemplo si nuestro programa fuera
aabacba
Luego bcb
saldría a
, aaaca
tendría que salir b
y aababa
saldría c
.
No importa lo que haga el programa no modificado.
Las respuestas se puntuarán en bytes con el objetivo de minimizar el número de bytes.
code-golf
source-layout
radiation-hardening
Asistente de trigo
fuente
fuente
Respuestas:
zsh,
603594566561548440415399378370 bytesDepende de coreutils +
dc
.Pruébalo en línea!
Eso fue ... un viaje.
Esta respuesta tiene tres partes. Las primeras 4 líneas manejan ciertos casos especiales para simplificar el código que sigue. Las siguientes 2 líneas y la última línea logran esencialmente lo mismo, pero exactamente una se ejecuta con cualquier eliminación de caracteres. Se escriben con conjuntos de caracteres en su mayoría complementarios, por lo que eliminar cualquier carácter rompe solo uno como máximo, permitiendo que el otro continúe funcionando.
Mirando la primera parte, primero manejamos
ec\nho \\n
ca t<<<$'\x20'
(seguido deexi t
para evitar ejecutar código posterior, lo que daría como resultado una salida extraña)$
eliminación cond$c -e8BC6P
(8BC6
=9226
es36*256 + 10
, y 36 y 10 son los valores de byte de los$
caracteres de línea nueva y respectivamente; utilizamos dígitos hexadecimales en decimal para evitar tener que incluirlos en el comentario grande en la línea 6)0
eliminación cond0c -eKp
(K
obtiene la precisión decimal, que es la0
predeterminada)En la siguiente parte, los únicos caracteres utilizados (aparte de la basura al final de la segunda línea) son
$'\01234567v;
espacio y nueva línea. De estos, cuatro se han contabilizado, por lo que el resto ('\1234567v
) no puede aparecer en la última línea. Al expandir los escapes octales ($'\123'
representa el carácter ASCII con el valor 123 8 ), obtenemos:La primera línea recorre todos los caracteres utilizados en el programa y busca cada uno en su propio código fuente (
$0
es el nombre de archivo del script que se está ejecutando), imprimiendo cualquier carácter que no se encuentre.La segunda línea parece un poco extraña, y parece hacer lo mismo que
exit
con un montón de nops. Sin embargo, la codificaciónexit
como octal da como resultado directamente$'\145\170\151\164'
, lo que no contiene2
o3
. De hecho, necesitamos hacer esto menos resistente a las mudanzas. Esto se debe a que si'\014567v
se elimina alguno de ellos, se rompe la primera línea, la segunda línea también se rompe, permitiendo que se ejecute el resto del código. Sin embargo, necesitamos que también se rompa si se eliminan2
o3
se eliminan para que las líneas 3 y 4 puedan ejecutarse. Esto se logra calzando zapatos en:
y;
, que tienen un 2 y un 3 en su representación octal, respectivamente.La basura al final de la línea 2 simplemente está ahí para garantizar que todos los caracteres ASCII imprimibles aparezcan al menos una vez, ya que la forma en que se realiza la comprobación recorriendo cada uno requiere esto.
Si
exit
no se llamó en la primera sección (es decir, fue destruida por la eliminación de uno de'\01234567v
), pasamos a la segunda, en la que debemos lograr lo mismo sin usar ninguno de estos caracteres. La última línea es similar a la primera línea decodificada, excepto que podemos contraer el rango del bucle para guardar algunos bytes, porque ya sabemos que todos los caracteres, excepto el,'\01234567v
han sido cubiertos. También tiene0# $#
delante, lo que lo comenta y evita que produzca resultados extraños si se eliminaron0
o$
no.fuente
Retina , 1 byte
Pruébalo en línea!
Cuando
1
se eliminan todas las instancias del byte único ( ), la salida es1
. Suficientemente simple.fuente
1
el programa vacío? De todos modos, creo que las respuestas en cuestión utilizan diferentes enfoques y comportamientos. OMI, una respuesta políglota solo está garantizada si el enfoque sigue siendo el mismo. (Objetivamente, esto no es un políglota ya que el código real es diferente, para las respuestas a continuación.) Siéntase libre de votar como quiera, pero una respuesta válida es una respuesta válida. Mantendré mi respuesta tal como está, no deseo albergar una colección de respuestas.Lenguaje, 216173027061157310 bytes
216173027061157310 = (144115617572598740 + 144115241762960340 + 144115194786755540) / 2
. Hay216173027061157310 - 144115617572598740
$
s,216173027061157310 - 144115241762960340
#
sy216173027061157310 - 144115194786755540
espacios.Los 144115617572598740
#
sy los espacios codifican el siguiente programa BF:Pruébalo en línea!
Los 144115241762960340
$
sy los espacios codifican el siguiente programa BF:Pruébalo en línea!
Los 144115194786755540
$
sy#
s codifican el siguiente programa BF:Pruébalo en línea!
Editar: 72057832274401770 bytes guardados gracias a @Nitrodon.
fuente
U
y byte 127? Pruébalo en línea! ¿O incluso solo el byte nul y soh?U
era el byte ASCII imprimible más corto que se podía generar. No quería usar bytes no imprimibles.Gelatina , 1 byte
Completamente diferente de la respuesta de Retina. silbidos
Pruébalo en línea!
fuente
Polyglot * , 1 byte (en espera de confirmación )
Pruébalo en línea! (usando triangularidad)
*: Esto funciona en una variedad (bastante amplia) de idiomas (excepto para esolangs como 4,> <> y similares y algunas otras excepciones). Idéntico a la respuesta de Jelly en el código fuente, pero el método de E / S es diferente: la salida es a través del código de salida. Cuando uno elimina
0
el código fuente, se queda con un programa vacío, que a menudo no produce errores y produce el código de salida 0 en la mayoría de los idiomas.fuente
sed , 1 byte
Pruébalo en línea!
Completamente diferente de la respuesta Retina, o la respuesta Jelly.
fuente
Unario (no competitivo), 96 bytes
Aquí está el
xxd
basurero.Una definición más amplia de lenguaje Unary permite cualquier carácter en su código fuente. Pero no he encontrado un compilador o intérprete que funcione para esto. Entonces marqué esta respuesta como no competitiva. Si puede encontrar uno que haya publicado antes de esta pregunta, lo vincularé.
fuente