Escriba un programa que imprima "¡Hola, mundo!". Pero también, si toma solo los caracteres primero, tercero, quinto, etc. de su programa, el programa resultante aún debería imprimir "¡Hola, Mundo!".
Si su programa es:
abc
def
Debería mostrar "¡Hola, mundo!", Pero también debería
acdf
No hay soluciones con menos de 2 caracteres.
code-golf
string
source-layout
hello-world
radiation-hardening
Leo Tenenbaum
fuente
fuente
Respuestas:
Python 3 , 61 bytes
Pruébalo en línea!
Abusar del hecho de que
print
es una función en Python 3 :)La solución menos partidista que encontrarás aquí en PPCG.
Se convierte
fuente
[:]
realmente funcionaba: ¡o bien!Cardenal , 29 bytes
Pruébalo en línea!
Al eliminar todos los demás caracteres, se eliminan todos los avances de línea, lo que aún da como resultado
Hello, World!
:Pruébalo en línea!
La razón por la que esto funciona es que
%
crea cuatro punteros de instrucción, que se mueven en cada una de las cuatro direcciones cardinales. Las IP que dejan el código fuente simplemente se eliminan. Entonces, en el primer caso, solo queda la IP hacia el sur y en el segundo caso, solo queda la IP hacia el este, todos los demás simplemente se descartan. En cualquier caso, el programa ejecutado es justo"Hello, World!
. Los"
conmuta a modo de cadena en la que cada célula está simplemente en la salida estándar. No necesitamos terminar la cadena, porque dejar el código fuente aún termina el programa.Tenga en cuenta que la misma idea funciona en Beeswax , usando en
*
lugar de%
y en`
lugar de"
(esto se debe a que Beeswax se inspiró en gran medida en Cardinal pero usa una cuadrícula hexagonal).Pruébalo en línea! (vertical) | El | Pruébalo en línea! (horizontal)
fuente
C, 125 bytes
Pruébalo en línea!
Con incluso caracteres eliminados:
Pruébalo en línea!
fuente
En realidad , 2 bytes
Explicación:
H
, como es de esperar, empujaHello, World!
a la pila.El programa principal (
HH
) encontrará el primeroH
y lo empujaráHello, World!
a la pila. En el segundoH
, sin embargo, intentará usar dos argumentos (ya que la pila debe estar vacía para empujarHello, World!
) y fallará. Sin embargo, este error será ignorado y luegoHello, World!
se imprimirá implícitamente.El segundo programa (
H
) se presionaráHello, World!
una vez, y eso se imprimirá implícitamente.Esto es similar a la respuesta de 2 bytes de Fatalize, pero esto realmente no "engaña".
Pruébalo en línea!
fuente
H
solo empujaríaHello, World!
una pila vacía, y si la pila no está vacía, esperaría 2 argumentos, por lo que habrá un error, y los errores se ignoran. Y no En realidad, no imprime implícitamente solo el elemento superior.Lua , 89 bytes
Pruébalo en línea! Como muestra el resaltado de sintaxis, este es un abuso masivo de comentarios.
Alterno:
Pruébalo en línea!
Y para mayor comodidad, un programa para convertir un programa en cualquier otra forma de personaje: ¡ Pruébelo en línea!
fuente
HHeelllloo WWoorrlldd!!
es un poco aburrido: PRetina , 39 bytes
Pruébalo en línea!
Tomar cada otro personaje da:
Pruébalo en línea!
El primer programa crea una cadena con el saludo duplicado. Luego reemplaza cada par de caracteres con el primer carácter. También hay una etapa vacía que reemplaza todas las cadenas vacías con cadenas vacías en el medio, pero eso no hace nada. El segundo programa no coincide con la letra "x", por lo que no reemplaza nada después de crear el saludo.
Quizás de manera más divertida, si la tercera etapa se cambia ligeramente, el primer conjunto de caracteres no tiene que ser el mismo mensaje. Esto podría conducir a muchas soluciones de longitud idéntica, como la completa y la mitad .
fuente
Carbón de leña , 25 bytes
Pruébalo en línea!
Si elimina los caracteres pares, simplemente elimina los comandos de flecha que indican la dirección del siguiente texto, y eso deja el siguiente código:
Pruébalo en línea!
Eso también imprime el saludo.
fuente
Haskell , 85 bytes
Pruébalo en línea!
Cada segundo personaje eliminado:
Pruébalo en línea!
Esto explota los dos formatos de comentarios en Haskell:
{- -}
para comentarios en línea o multilínea y--
para comentar el resto de la línea.fuente
Javascript, 67 bytes
Cada segunda letra eliminada:
Al igual que la respuesta de Hasikell de Laikoni, esto explota los comentarios.
fuente
// * /
a//**/
(lo que desafortunadamente no es posible en su caso debido a que/**/alert`Hello, World`
es una cantidad impar de bytes, en lugar de incluso en mi caso .Brachylog , 4 bytes
Pruébalo en línea!
Explicación
~w
escribe su variable derecha enSTDOUT
e ignora su argumento izquierdo.Ḥ
es"Hello, World!"
, así que esto imprimeHello, World!
.Si solo tomamos los caracteres primero y tercero, obtenemos
Ḥw
. En ese casow
escribe su variable izquierda e ignora su variable derecha, por lo que también imprimeHello, World!
.2 bytes
Pruébalo en línea!
Esto es técnicamente una respuesta válida, pero unifica la variable de salida del programa en lugar de imprimir
STDOUT
, por lo que supongo que el programa de 4 bytes está más en el espíritu del desafío.fuente
Haskell, 102 bytes
El programa completo:
y con cualquier otro personaje eliminado:
fuente
p u t S t r
y\"
.código de máquina x86, 162 bytes
PROG.COM Descargue y ejecútelo en el emulador de MS-DOS , DOSBox , por ejemplo.
después de la extracción MINI.COM Descargar
¿Como correr?
Instale DOSBox, para Ubuntu / Debian
Ejecutarlo
En DOSBOX
¿Cómo funciona?
Los códigos de operación de la máquina representan instrucciones en lenguaje ensamblador .
En MS-DOS para imprimir caracteres , establecerá registros y hará interrupciones. El registro AH será 0x02, el registro DL contiene su char. El vector de interrupción es 0x21.
El pequeño modelo de archivo COM de MS-DOS es una buena elección, porque no tiene encabezados . Está limitado por 64K, pero en nuestro caso no importa.
Para detener el programa, use la interrupción 0x20
magia
Si desea ejecutar el comando 0xAB opcode con un parámetro 0xCD , escriba
En PROG.COM
En MINI.COM
Es códigos de máquina iguales , si no usa el registro BL .
Generador
Convertir archivo de texto con hexadecimal a binario hexadecimal
Mostrar fragmento de código
fuente
Pyth , 31 bytes
Pruébalo en línea!
Se convierte
Gracias a @CalculatorFeline por señalar un error y eliminar un byte.
fuente
V , 32 bytes
Tenga en cuenta que
<esc>
es un solo carácter, por ejemplo0x1b
Pruébalo en línea!
Eliminar cualquier otro personaje da:
Pruébalo en línea!
fuente
05AB1E , 29 bytes
Pruébalo en línea!
Explicación
Después de eliminar cualquier otro personaje, nos queda el código
Pruébalo en línea!
Explicación
fuente
Mathematica, 62 bytes
Regresa
"0H0e0l0l0o0,0 0W0o0r0l0d0!0" Null P0r0i0n0t0[0]
e imprimeHello, World!
como un efecto secundario. Cuando se ejecuta como un programa (no en REPL), el valor de retorno no se imprimirá.Después de eliminar cualquier otro personaje:
Regresa
Null ol! rn[Hlo]
e imprimeHello, World!
.fuente
Jalea ,
2625 bytesPruébalo en línea!
Después de eliminar cada segundo carácter, nos queda el siguiente código.
Pruébalo en línea!
Cómo funciona
fuente
Cubic v2.1 , 222 bytes
Pruébalo en línea!
Cada otra carta:
Pruébalo en línea!
fuente
CJam , 32 bytes
Pruébalo en línea!
Tomar cada otro personaje da:
Pruébalo en línea!
fuente
Ayuda, WarDoq! , 2 bytes
Pruébalo en línea!
H
impresionesHello, World!
,i
es un no-op.Ayuda, WarDoq! puede agregar dos números y probar primos, por lo que se considera un lenguaje de programación válido según esta meta publicación .
fuente
/// , 25 bytes
Pruébalo en línea!
Con cada otro personaje eliminado:
fuente
PHP, 53 bytes
Con cada otro personaje eliminado:
fuente
Octava,
4945 bytesGuardado 4 bytes ya que Octave no requiere corchetes para indexar.
Pruébalo en línea!
Y el reducido:
Pruébalo en línea!
Explicación:
El código inicial tiene las letras en la cadena duplicadas, de modo que nos quedamos
Hello, World!
cuando se elimina cada segundo. Se agregan algunos espacios para garantizar que se mantengan los corchetes y los apóstrofes.La indexación es realmente
1:2:end
. Hay 27 caracteres, y no podemos utilizarend
o27
ya que debemos eliminar un carácter, por lo que van con3 ^ 3
su lugar. Cuando eliminamos cada tercer carácter, la indexación se convierte(:)
(y algunos espacios adicionales).(:)
significa "aplanar y convertir en un vector vertical" . Entonces, necesitamos transponerlo, usando'
. No necesitamos transponer la cadena en el código original, pero la doble transposición funciona, por lo que la primera cadena se transpone dos veces usando''
, y la segunda se transpone solo una vez.fuente
APL (Dyalog) ,
3534 bytes-1 gracias a Martin Ender.
Pruébalo en línea!
'0H0e0l0l0o0,0 0W0o0r0l0d0!0'
el mensaje con ceros como caracteres de relleno extraíbles~
excepto⍕
formateado (stringified)0
Número ceroDejando solo los caracteres impares, esto se convierte
'Hello, World!'
.fuente
T-SQL, 75 bytes
Abuso de comentarios de una o varias líneas, inspirado en la versión LUA de CalculatorFeline .
Después de eliminar todos los caracteres pares, algunos de los cuales son saltos de línea:
fuente
Javascript, 73 bytes
Construye una cadena
a
con el contenidoa0l0e0r0t0`0H0e0l0l0o0,0 0W0o0r0l0d0!0`0/0/
, luego elimina todo lo que se0
debe daralert`Hello, World!`//
, que eseval
'd.Tomar cada otro personaje del programa da
que alerta
Hello, World
usando la sintaxis de cadena de plantilla de la misma manera que lo que se evaluó en el programa completo, luego almacena el resultado de la llamadaa
e incluye el comentario perspicaz//;vlarpae//,')
.fuente
> <> , 47 bytes
Original:
Con cada segundo personaje eliminado:
Pruébelos en línea: original , modificado
El programa original empuja a los personajes de "¡Hola, mundo!" a la pila (en orden inverso) intercalados con espacios, luego imprime alternativamente un carácter y elimina uno hasta que la longitud de la pila es cero. El segundo programa hace lo mismo, excepto que las instrucciones de eliminación
~
se han ido.Si no le importa detenerse con un error, podemos sacar una hoja del libro Cardinal de Martin Ender : el código modificado es
y el original es el mismo pero con líneas nuevas insertadas entre todos los caracteres, para 39 bytes. Pruébelos en línea: original , modificado .
fuente
,,, 34 bytes
Al eliminar los caracteres pares ...
Explicación
Con todos los personajes:
Sin los caracteres pares:
fuente
Brainfuck, 155 bytes
Pruébalo en línea!
Cada segundo personaje eliminado:
fuente
Jalea , 32 bytes
Pruébalo en línea!
-2 bytes gracias a la respuesta de @ totallyhuman
Ahora el mío es un tonto>. <
Vota ese también: D
fuente