Como parte da parte 2 do Hello, World! (Todos os outros caracteres) , escreva um programa para que todos esses três programas imprimam "Olá, Mundo!": O programa inteiro, o 1º, o 3º, o 5º, etc. caracteres do seu programa e os 2º, 4º, 6º, etc.
Se o seu programa é:
abc
def
Ele deve exibir "Olá, mundo!", Mas também deve
acdf
E
b
e
Nenhuma solução com o "Olá, mundo!" Incorporado.
code-golf
source-layout
hello-world
Leo Tenenbaum
fonte
fonte
Respostas:
código de máquina x86, 378 bytes
PROG.COM Baixe e execute-o no emulador do MS-DOS , DOSBox , por exemplo.
Além disso, você pode baixar o LEFT.COM e o RIGHT.COM
Como funciona e como executar
Veja a resposta da parte um
Magia
Se você deseja executar o comando 0xAB opcode com um parâmetro 0xCD , você escreve
Gerador
Executar código, obter hexadecimal. Converter em binário
Mostrar snippet de código
fonte
Python 3 , 115 bytes
Todo personagem estranho
Todo personagem par
Experimente online!
Provavelmente isso poderia ficar muito mais curto, mas estou feliz por conseguir fazê-lo funcionar em Python. Semelhante à resposta de vroomfondel na primeira parte.
Resposta chata de 93 bytes
Todo personagem estranho
Todo personagem par
Experimente online!
fonte
> <> , 45 bytes
Ou apenas caracteres:
Ou apenas caracteres estranhos:
Experimente-os online: originais , pares , probabilidades .
A versão original empurra "
!!ddllrrooWW oolllleeHH
" para a pilha e o peixe salta entre>~o <
, o que exclui uma letra, imprime duas, exclui duas, imprime duas, exclui duas, etc. Os dois semi-programas são programas de impressão de seqüência bastante padrão. A parte complicada foi combinar"
e!
ativar e desativar o modo de string nos três programas corretamente.fonte
Befunge-98 , 43 bytes
Experimente online!
Apenas os estranhos:
Experimente online!
Somente os pares:
Experimente online!
Explicação
O programa completo:
No programa ímpar, ele
2
desapareceu, de modo que10x
realmente não faz nada (ele define o delta como(1,0)
o padrão de qualquer maneira). O restante do programa é o mesmo.No programa par, apenas pressionamos
2
o princípio que podemos ignorar completamente. O restante do programa é o mesmo de antes.fonte
Gammaplex , 46 bytes
Veja aqui.
Intérprete. Pode ser necessário fazer algumas alterações para funcionar em compiladores modernos.
fonte
Mathematica, 65 bytes
Emite alguns avisos, impressões
Hello, World!
e devoluçõesNull PPrriinntt[["" HHeelllloo, Null, "" WWoorrlldd!!]]
. Quando executado como um programa (não no REPL), o valor de retorno não será impresso.Depois de remover os caracteres pares:
Imprime
Hello, World!
e retorna"el,Wrd" Null Pit
.Depois de remover os caracteres ímpares:
Imprime
Hello, World!
e retornaNull ol! rn[Hlo]
.fonte
código de máquina x86, 73 bytes
Inspirado pela solução de Евгений Новиков , achei que deveria ser possível com menos truques, ou seja, apenas pulando para códigos "disjuntos" para as três variantes. Ainda estou tentando com uma variante inteligente que use
lodsb; lodsb
como ponto central (portanto, apenas uma constante de cadeia é necessária para todas as variantes)Se bem me lembro dos dias da minha infância, o pequeno modelo do COM começa
DS=CS=SS
e o código é carregado a partir deCS:0100h
. Não presumo que seja garantido que o código seja carregado em um bloco de memória zerado (se fosse garantido, eu poderia eliminar dois bytes).A desmontagem do código longo deve ser
Desmontagem do código ímpar
Desmontagem do código par:
fonte
8A
em 0116 deve serBA
, em vez disso, e as seqüências de caracteres são terminadas por$
, não NULL.Retina , 48 bytes
Experimente online!
Posições ímpares:
Experimente online!
Posições pares:
Experimente online!
Explicação
O programa completo:
Isso não faz nada. A
|
opção não é uma configuração existente. OG
torna esta uma fase grep, mas não há realmente nada a ser grepped ea regex é esvaziar qualquer, então isso não faz nada. O objetivo desse estágio é ter dois feeds de linha na frente do "Olá, mundo!" linha para que um deles sempre sobreviva à redução. A razão para fazer disso um grep stag é que precisamos compensar a paridade das linhas, e os estágios grep requerem apenas uma única linha.Isso transforma a sequência de trabalho (vazia) na saída necessária, com cada caractere dobrado.
Isso não faz nada. As tentativas de regex para corresponder a um
_
e um&
após o final da cadeia que é obviamente impossível. No entanto, precisaremos desses caracteres na versão reduzida, novamente para lidar com os desaparecimentos de linha.Finalmente, removemos os caracteres duplicados substituindo
(.)\1
por$1
. Ot?
nunca é usado, mas será novamente necessário nas versões reduzidas.O programa ímpar:
O
G
não pode corresponder à entrada vazia, mas é por isso que temos|
que permitir uma correspondência vazia alternativa. Isso transforma a cadeia de trabalho vazia na saída desejada.Isso substitui os sublinhados por
()1?$
, mas não há sublinhados na sequência, portanto, isso não faz nada.O programa par:
O
`
just denota uma string de configuração vazia, então usamos novamente o regex vazio para substituir a string de trabalho pela saída. Desta vez, também inserimos,$&
mas essa é a correspondência em si, que está vazia, é claro, para que não faça nada.Isso substituiria qualquer caractere seguido por uma guia por a
1
, mas não temos nenhuma guia , portanto, isso também é um não-op.fonte
Lua , 106 bytes
Experimente online!
Alternativa 1:
Experimente online!
Alternativa 2:
Experimente online!
Script do alternador: Experimente online!
fonte
CJam , 44 bytes
Experimente online!
fonte
PHP, 70 bytes
Caracteres ímpares:
Caracteres pares:
fonte
Haskell , 92 bytes
Experimente online! Parece que o abuso de comentários é exagerado para o realce da sintaxe.
{- ... -}
é um comentário embutido ou de várias linhas, enquanto--
inicia um comentário de linha.Caracteres ímpares:
Experimente online!
Caracteres pares:
Experimente online!
fonte
Zsh , 54 bytes
Experimente online!
O programa principal executa a primeira instrução com sucesso, portanto, a instrução após o booleano
||
é ignorada.Para ímpar / par,
<<<Hello\ world!
torna-se um não terminado<<heredoc
ou um<file
fornecido no stdin. De qualquer forma, o||
torna - se|
, e, portanto, o que for gerado pelo primeiro comando é canalizado e ignoradoecho
.fonte
LOGO , 71 bytes
(o programa tem uma nova linha à direita)
Duas versões removidas:
e
(o programa tem uma nova linha à direita)
Para uma explicação sobre o que
pr
eer
fazer, consulte este post . Nesse caso,er
é alimentado com uma palavra para determinar o nome do procedimento.O
\
caractere de escape é no Logo, que escapará da nova linha após o final do comentário, portanto faça da segunda linha (rHlo ol!e |
) do segundo programa removido um comentário.fonte
Javascript, 68 bytes
Personagens Estranhos:
Personagens pares:
Versão modificada da minha resposta na outra.
fonte
l
inHHeelllloo
.Perl 5 , 61 bytes
Código de 60 bytes + 1 para
-p
.Experimente online!
Every Byte Estranho
Experimente online!
Every Even Byte
Experimente online!
fonte
BotEngine ,
180178 bytesCom base na minha resposta a esta pergunta.
Caracteres ímpares (observe os vários espaços à direita na última linha):
Caracteres pares:
fonte
Encantos Rúnicos , 52 bytes
Experimente online!
Rúnico geralmente não é muito bom em lidar com radiação, pois remover caracteres de controle de fluxo aleatoriamente torna a execução do rastreamento uma dor enorme, mas radiação previsível como todos os outros caracteres? Fácil, apenas codificamos dois programas que são revertidos e intercalados e, em seguida, aderimos a uma terceira cópia para a execução e controle da base, que é executado com um único caractere. No programa 2, a terceira cópia é lixo que nunca é visto e, no programa 3, retém as aspas, permitindo que seja estourada sem imprimi-la.
O programa 1 executa apenas esta parte:
O programa 2 executa apenas esta parte:
Como isso:
Experimente online!
O programa 3 executa apenas esta parte:
Como isso:
Experimente online!
A
"drW,le"
parte é executada, mas a~
sai imediatamente da pilha, preservando a saída desejada.Ingenuamente, parece que uma conversão da resposta> <> resultaria em um programa mais curto, pesando 45 bytes:
No entanto, o Runic tem uma limitação que> <> não possui: um tamanho máximo de pilha de 10 + mana de IP (que é inicialmente 10). E
!!ddllrrooWW oolllleeHH
contém 24 caracteres, fazendo com que o IP esvazie a mana até expirar pouco antes de executar oR
comando, resultando em nenhuma saída para o programa base.Experimente online!
fonte