Como una especie de parte 2 para Hello, World! (Todos los demás caracteres) , escriba un programa de manera que los tres programas impriman "¡Hola, mundo!": El programa completo, los caracteres primero, tercero, quinto, etc. de su programa, y el segundo, cuarto, sexto, etc.
Si su programa es:
abc
def
Debería mostrar "¡Hola, mundo!", Pero también debería
acdf
Y
b
e
No hay soluciones con "Hola, mundo" incorporado.
code-golf
source-layout
hello-world
Leo Tenenbaum
fuente
fuente
Respuestas:
código de máquina x86, 378 bytes
PROG.COM Descargue y ejecútelo en el emulador de MS-DOS , DOSBox , por ejemplo.
También puede descargar LEFT.COM y RIGHT.COM
Cómo funciona y cómo correr
Ver respuesta a la primera parte
magia
Si desea ejecutar el comando 0xAB opcode con un parámetro 0xCD , escriba
Generador
Ejecute el código, obtenga hexadecimal. Convertir a binario
Mostrar fragmento de código
fuente
Python 3 , 115 bytes
Cada personaje extraño
Cada personaje par
Pruébalo en línea!
Esto probablemente podría ser mucho más corto, pero estoy feliz de que logré que funcione en Python. Similar a la respuesta de vroomfondel en la primera parte.
Aburrido respuesta de 93 bytes
Cada personaje extraño
Cada personaje par
Pruébalo en línea!
fuente
> <> , 45 bytes
O simplemente personajes:
O simplemente caracteres extraños:
Pruébelos en línea: originales , pares , probabilidades .
La versión original empuja "
!!ddllrrooWW oolllleeHH
" a la pila, luego el pez rebota entre ellos>~o <
, lo que elimina una letra, imprime dos, elimina dos, imprime dos, elimina dos, etc. Los dos medios programas son programas de impresión de cadenas bastante estándar. La parte difícil era combinar"
y!
activar y desactivar el modo de cadena en los tres programas correctamente.fuente
Befunge-98 , 43 bytes
Pruébalo en línea!
Solo los impares:
Pruébalo en línea!
Solo los pares:
Pruébalo en línea!
Explicación
El programa completo:
En el programa impar,
2
se ha ido, por lo que10x
realmente no hace nada en absoluto (de todos(1,0)
modos establece el delta que es el predeterminado). El resto del programa es el mismo.En el programa par, simplemente presionamos
2
el principio que podemos ignorar por completo. El resto del programa es el mismo que antes.fuente
Gammaplex , 46 bytes
Mira aquí.
Interprete. Es posible que necesite algunos cambios para funcionar en compiladores modernos.
fuente
Mathematica, 65 bytes
Lanza algunas advertencias, impresiones
Hello, World!
y devolucionesNull PPrriinntt[["" HHeelllloo, Null, "" WWoorrlldd!!]]
. Cuando se ejecuta como un programa (no en REPL), el valor de retorno no se imprimirá.Después de eliminar los caracteres pares:
Imprime
Hello, World!
y vuelve"el,Wrd" Null Pit
.Después de eliminar los caracteres impares:
Imprime
Hello, World!
y vuelveNull ol! rn[Hlo]
.fuente
código de máquina x86, 73 bytes
Inspirado por la solución de Евгений Новиков , pensé que debería ser posible con menos trucos, es decir, simplemente saltar a los códigos "disjuntos" para las tres variantes. Todavía estoy intentando con una variante inteligente que se usa
lodsb; lodsb
como punto central (por lo que solo se necesita una constante de cadena para todas las variantes)Si recuerdo correctamente de mis días de infancia, el pequeño modelo de COM comienza con
DS=CS=SS
y el código se carga a partir deCS:0100h
. No asumo que está garantizado que el código se carga en un bloque de memoria a cero (si estuviera garantizado, podría soltar dos bytes).El desmontaje del código largo debe ser
Desmontaje de código impar
Desmontaje de código par:
fuente
8A
0116 debería serBA
en su lugar, y las cadenas se terminan por$
, no NULL.Retina , 48 bytes
Pruébalo en línea!
Posiciones impares:
Pruébalo en línea!
Posiciones pares:
Pruébalo en línea!
Explicación
El programa completo:
Esto no hace nada en absoluto. La
|
no es una opción de configuración existente. Esto loG
convierte en una etapa de grep, pero realmente no hay nada que ser grepé y la expresión regular está vacía, por lo que esto no hace nada. El propósito de esta etapa es tener dos avances de línea frente al principal "¡Hola, mundo!" línea para que uno de ellos siempre sobreviva a la reducción. La razón para convertir esto en un ciervo grep es que necesitamos compensar la paridad de las líneas, y las etapas grep solo requieren una sola línea.Esto convierte la cadena de trabajo (vacía) en la salida requerida con cada carácter duplicado.
Esto no hace nada. Los intentos de expresiones regulares para que coincida con una
_
y&
después del final de la cadena, que es, por supuesto, imposible. Sin embargo, necesitaremos esos caracteres en la versión reducida, nuevamente para lidiar con los avances de línea que desaparecen.Finalmente, eliminamos los caracteres duplicados reemplazándolos
(.)\1
con$1
. Elt?
nunca se usa pero será necesario nuevamente en las versiones reducidas.El programa extraño:
No
G
puede coincidir con la entrada vacía, pero es por eso que tenemos|
que permitir una coincidencia vacía alternativa. Esto convierte la cadena de trabajo vacía en la salida deseada.Esto reemplaza los guiones bajos con
()1?$
, pero no hay guiones bajos en la cadena, por lo que no hace nada.El programa par:
El
`
solo denota una cadena de configuración vacía, por lo que nuevamente usamos la expresión regular vacía para reemplazar la cadena de trabajo con la salida. Esta vez también insertamos,$&
pero esa es la coincidencia en sí, que está vacía, por supuesto, por lo que no hace nada.Esto reemplazaría cualquier carácter seguido de una pestaña con un
1
, pero no tenemos pestañas, por lo que esto también es un no-op.fuente
Lua , 106 bytes
Pruébalo en línea!
Alternativa 1:
Pruébalo en línea!
Alternativa # 2:
Pruébalo en línea!
Script del alternador: ¡ Pruébelo en línea!
fuente
CJam , 44 bytes
Pruébalo en línea!
fuente
PHP, 70 bytes
Caracteres impares:
Personajes pares:
fuente
Haskell , 92 bytes
Pruébalo en línea! Parece que el abuso de comentarios es demasiado para el manejo de resaltado de sintaxis.
{- ... -}
es un comentario en línea o de varias líneas, mientras que--
comienza un comentario en línea.Caracteres impares:
Pruébalo en línea!
Personajes pares:
Pruébalo en línea!
fuente
Zsh , 54 bytes
Pruébalo en línea!
El programa principal ejecuta la primera declaración con éxito, por lo que
||
se ignora la declaración después del booleano .Para impar / par, se
<<<Hello\ world!
convierte en un stdin no terminado<<heredoc
o<file
provisto. De cualquier manera, se||
convierte en|
, y así lo que sea que salga por el primer comando es canalizado e ignorado porecho
.fuente
LOGOTIPO , 71 bytes
(el programa tiene una nueva línea final)
Dos versiones eliminadas:
y
(el programa tiene una nueva línea final)
Para una explicación de qué
pr
yer
hacer, vea esta publicación . En este caso,er
se alimenta con una palabra para determinar el nombre del procedimiento.El
\
carácter de escape es en Logo, que escapará de la nueva línea después del final del comentario, por lo tanto, haga que la segunda línea (rHlo ol!e |
) del segundo programa eliminado sea un comentario.fuente
Javascript, 68 bytes
Caracteres impares:
Personajes pares:
Versión modificada de mi respuesta en la otra.
fuente
l
enHHeelllloo
.Perl 5 , 61 bytes
Código de 60 bytes + 1 para
-p
.Pruébalo en línea!
Cada byte impar
Pruébalo en línea!
Cada byte par
Pruébalo en línea!
fuente
BotEngine ,
180178 bytesBasado en mi respuesta a esta pregunta.
Caracteres impares (tenga en cuenta los múltiples espacios finales en la última línea):
Personajes pares:
fuente
Encantamientos rúnicos , 52 bytes
Pruébalo en línea!
Runic generalmente no es muy bueno para lidiar con la radiación, ya que eliminar los caracteres de control de flujo al azar hace que la ejecución del rastreo sea un gran dolor, pero ¿radiación predecible como cualquier otro personaje? Fácil, simplemente codificamos dos programas que se invierten entre sí y se intercalan, luego agregamos una tercera copia para la ejecución base y controlamos cuál se ejecuta con un solo carácter. En el programa 2, la tercera copia es basura que nunca se ha visto, y en el programa 3 conserva las comillas, lo que permite que aparezca sin imprimirla.
El programa 1 solo ejecuta esta parte:
El programa 2 solo ejecuta esta parte:
Me gusta esto:
Pruébalo en línea!
El programa 3 solo ejecuta esta parte:
Me gusta esto:
Pruébalo en línea!
La
"drW,le"
porción se ejecuta, pero~
inmediatamente la saca de la pila, conservando la salida deseada.Ingenuamente parecería que una conversión de la respuesta> <> resultaría en un programa más corto, con un peso de 45 bytes:
Sin embargo, Runic tiene una limitación que> <> no tiene: un tamaño de pila máximo de 10 + maná de IP (que inicialmente es 10). Y
!!ddllrrooWW oolllleeHH
contiene 24 caracteres, lo que hace que la IP sangre maná hasta que caduque justo antes de ejecutar elR
comando, lo que no genera salida para el programa base.Pruébalo en línea!
fuente