Escreva um programa que imprima "Olá, mundo!". Mas também, se você usar apenas o primeiro, o terceiro, o quinto, etc. caracteres do seu programa, o programa resultante ainda deverá imprimir "Olá, Mundo!".
Se o seu programa é:
abc
def
Ele deve exibir "Olá, mundo!", Mas também deve
acdf
Nenhuma solução com menos de 2 caracteres.
code-golf
string
source-layout
hello-world
radiation-hardening
Leo Tenenbaum
fonte
fonte
Respostas:
Python 3 , 61 bytes
Experimente online!
Abusando do fato de que
print
é uma função no Python 3 :)A solução menos partidária que você encontrará aqui no PPCG.
Torna-se
fonte
[:]
realmente funcionava: o Legal!Cardinal , 29 bytes
Experimente online!
A remoção de todos os outros caracteres remove todos os feeds de linha, o que ainda resulta em
Hello, World!
:Experimente online!
A razão pela qual isso funciona é que
%
cria quatro ponteiros de instruções, movendo-se em cada uma das quatro direções cardeais. IPs que deixam o código fonte são simplesmente removidos. Portanto, no primeiro caso, apenas o IP do sul permanece e, no segundo caso, apenas o PI do leste permanece, todos os outros são simplesmente descartados. Em ambos os casos, o programa executado é justo"Hello, World!
. o"
alterna para o modo de corda, em que cada célula é simplesmente mostrados na saída padrão. Não precisamos finalizar a string, porque deixar o código fonte ainda encerra o programa.Observe que a mesma idéia funciona em cera de abelha , usando em
*
vez de%
e em`
vez de"
(isso ocorre porque a cera de abelha foi amplamente inspirada pelo Cardinal, mas usa uma grade hexagonal).Experimente online! (vertical) | | Experimente online! (horizontal)
fonte
C, 125 bytes
Experimente online!
Com caracteres pares removidos:
Experimente online!
fonte
Na verdade , 2 bytes
Explicação:
H
, como você pode esperar, empurraHello, World!
para a pilha.O programa principal (
HH
) encontrará o primeiroH
e empurraráHello, World!
para a pilha. No segundoH
, no entanto, ele tentará usar dois argumentos (já que a pilha precisa estar vazia para pressionarHello, World!
) e falhará. No entanto, esse erro será ignorado e, em seguida,Hello, World!
será impresso implicitamente.O segundo programa (
H
) pressionaráHello, World!
enviado uma vez, e isso será impresso implicitamente.Isso é semelhante à resposta de 2 bytes de Fatalize, mas isso realmente não "trapaceia".
Experimente online!
fonte
H
apenas pressionariaHello, World!
uma pilha vazia e, se a pilha não estiver vazia, seria esperado 2 argumentos; portanto, haverá um erro e os erros serão ignorados. Na verdade, não imprime implicitamente apenas o elemento superior.Lua , 89 bytes
Experimente online! Como mostra o realce da sintaxe, isso é um abuso massivo de comentários.
Alternar:
Experimente online!
E, por conveniência, um programa para converter um programa em qualquer outra forma de caractere: Experimente online!
fonte
HHeelllloo WWoorrlldd!!
é meio chato: PRetina , 39 bytes
Experimente online!
Tomar todos os outros personagens dá:
Experimente online!
O primeiro programa cria uma string com a saudação duplicada. Em seguida, substitui cada par de caracteres pelo primeiro caractere. Há também um estágio vazio que substitui todas as cadeias vazias por cadeias vazias no meio, mas isso não faz nada. O segundo programa falha ao corresponder à letra "x", para que não substitua nada após a criação da saudação.
Talvez o mais divertido seja que, se o terceiro estágio for alterado ligeiramente, o primeiro conjunto de caracteres não precisará ser a mesma mensagem. Isso pode levar a muitas soluções de comprimento idêntico, como completas e reduzidas pela metade .
fonte
Carvão , 25 bytes
Experimente online!
Se você remover os caracteres pares, basta remover os comandos de seta que indicam a direção do próximo texto e que deixa o seguinte código:
Experimente online!
Isso também imprime a saudação.
fonte
Haskell , 85 bytes
Experimente online!
Cada segundo caractere removido:
Experimente online!
Isso explora os dois formatos de comentários em Haskell:
{- -}
para comentários em linha ou multilinhas e--
para comentar o restante da linha.fonte
Javascript, 67 bytes
A cada segunda letra removida:
Assim como a resposta de Haskell, de Laikoni, isso explora comentários.
fonte
// * /
para//**/
(o que infelizmente não é possível no seu caso por/**/alert`Hello, World`
ser uma quantidade ímpar de bytes, em vez de ser igual no meu caso .Braquilog , 4 bytes
Experimente online!
Explicação
~w
grava sua variável direita emSTDOUT
e ignora seu argumento esquerdo.Ḥ
é"Hello, World!"
, então isso imprimeHello, World!
.Se pegarmos apenas o primeiro e o terceiro caracteres, receberemos
Ḥw
. Nesse caso,w
escreve sua variável esquerda e ignora sua variável direita, para que também imprimaHello, World!
.2 bytes
Experimente online!
Esta é tecnicamente uma resposta válida, mas unifica a variável de saída do programa em vez de imprimir para
STDOUT
, então acho que o programa de 4 bytes está mais dentro do espírito do desafio.fonte
Haskell, 102 bytes
O programa completo:
e com todos os outros caracteres removidos:
fonte
p u t S t r
e\"
.código de máquina x86, 162 bytes
PROG.COM Baixe e execute-o no emulador do MS-DOS , DOSBox , por exemplo.
após a remoção Download do MINI.COM
Como correr?
Instale o DOSBox, para Ubuntu / Debian
Executá-lo
No DOSBOX
Como isso funciona?
Os códigos de operação da máquina representam instruções da linguagem de montagem .
No MS-DOS para imprimir char, você definirá registros e fará interrupções. O registro AH será 0x02, o registro DL contém o seu caracter. O vetor de interrupção é 0x21.
O modelo minúsculo do arquivo COM do MS-DOS é uma boa escolha, porque não possui cabeçalhos . É limitado por 64K, mas, no nosso caso, não importa.
Para parar o programa, use a interrupção 0x20
Magia
Se você deseja executar o comando 0xAB opcode com um parâmetro 0xCD , você escreve
Em PROG.COM
No MINI.COM
São códigos de máquina iguais , se você não usar o registro BL .
Gerador
Converter arquivo de texto com hexadecimal em hexadecimal binário
Mostrar snippet de código
fonte
Pitão , 31 bytes
Experimente online!
Torna-se
Agradecemos a @CalculatorFeline por apontar um erro e remover um byte.
fonte
V , 32 bytes
Observe que
<esc>
é um caractere único, por exemplo0x1b
Experimente online!
A remoção de todos os outros caracteres fornece:
Experimente online!
fonte
05AB1E , 29 bytes
Experimente online!
Explicação
Depois de remover todos os outros caracteres, ficamos com o código
Experimente online!
Explicação
fonte
Mathematica, 62 bytes
Ele retorna
"0H0e0l0l0o0,0 0W0o0r0l0d0!0" Null P0r0i0n0t0[0]
e imprimeHello, World!
como efeito colateral. Quando executado como um programa (não no REPL), o valor de retorno não será impresso.Depois de remover todos os outros caracteres:
Ele retorna
Null ol! rn[Hlo]
e imprimeHello, World!
.fonte
Geléia ,
2625 bytesExperimente online!
Depois de remover cada segundo caractere, ficamos com o código a seguir.
Experimente online!
Como funciona
fonte
Cubicamente v2.1 , 222 bytes
Experimente online!
Todas as outras letras:
Experimente online!
fonte
CJam , 32 bytes
Experimente online!
Tomar todos os outros personagens dá:
Experimente online!
fonte
Ajuda, WarDoq! , 2 bytes
Experimente online!
H
imprimeHello, World!
,i
é um no-op.Ajuda, WarDoq! pode adicionar dois números e testar primos, por isso é considerada uma linguagem de programação válida para este meta post .
fonte
/// , 25 bytes
Experimente online!
Com todos os outros caracteres removidos:
fonte
PHP, 53 bytes
Com todos os outros caracteres removidos:
fonte
Oitava,
4945 bytesSalva 4 bytes, pois o Octave não requer colchetes para fazer a indexação.
Experimente online!
E o reduzido:
Experimente online!
Explicação:
O código inicial tem as letras na string duplicadas, para que fiquemos com
Hello, World!
quando cada segundo é removido. Alguns espaços são adicionados para garantir que os colchetes e apóstrofos sejam mantidos.A indexação é realmente
1:2:end
. Existem 27 caracteres, e não podemos usarend
ou27
já que precisamos remover um caractere, então continuamos com3 ^ 3
ele. Quando removemos todos os terceiros caracteres, a indexação se torna(:)
(e alguns espaços adicionais).(:)
significa "achatar e se transformar em um vetor vertical" . Então, precisamos transpor, usando'
. Não precisamos transpor a string no código original, mas a dupla transposição funciona, então a primeira string é transposta duas vezes usando''
, e a segunda é transposta apenas uma vez.fonte
APL (Dyalog) ,
3534 bytes-1 graças a Martin Ender.
Experimente online!
'0H0e0l0l0o0,0 0W0o0r0l0d0!0'
a mensagem com zeros como caracteres de preenchimento removíveis~
exceto⍕
formatado (stringified)0
número zeroDeixando apenas os caracteres estranhos, isso se torna
'Hello, World!'
.fonte
T-SQL, 75 bytes
Abuso de comentários de uma e várias linhas, inspirado na versão LUA da CalculatorFeline .
Após a remoção de todos os caracteres pares, alguns dos quais são quebras de linha:
fonte
Javascript, 73 bytes
Constrói uma string
a
com o conteúdoa0l0e0r0t0`0H0e0l0l0o0,0 0W0o0r0l0d0!0`0/0/
e remove todos0
os itens a serem fornecidosalert`Hello, World!`//
, que sãoeval
'd.Tomar todos os outros caracteres do programa fornece
que alerta
Hello, World
usando a sintaxe da seqüência de caracteres do modelo da mesma forma que foi avaliada no programa completo, armazena o resultado da chamadaa
e inclui um comentário perspicaz//;vlarpae//,')
.fonte
> <> , 47 bytes
Original:
Com cada segundo caractere removido:
Experimente online: original , modificado
O programa original envia os caracteres de "Olá, mundo!" para a pilha (na ordem inversa) intercalada com espaços, imprime alternadamente um caractere e exclui um até que o comprimento da pilha seja zero. O segundo programa faz o mesmo, exceto as instruções de exclusão
~
se foram.Se você não se importa em parar com um erro, podemos tirar uma folha do livro do Cardinal de Martin Ender : o código modificado é
e o original é o mesmo, mas com novas linhas inseridas entre todos os caracteres, por 39 bytes. Experimente online: original , modificado .
fonte
,,,, 34 bytes
Ao remover os caracteres pares ...
Explicação
Com todos os personagens:
Sem os caracteres pares numerados:
fonte
Brainfuck, 155 bytes
Experimente online!
Cada segundo caractere removido:
fonte
Geléia , 32 bytes
Experimente online!
-2 bytes graças à resposta de totallyhuman
Agora o meu é um idiota>. <
Voto a favor desse também: D
fonte