Sua tarefa é criar um programa que imprima "Saudações, Planeta!" exatamente para o console. Parece bastante simples, certo? Bem, aqui está o truque. O código deve ser um palíndromo, ou seja, da direita para a esquerda, da mesma forma que da esquerda para a direita. As brechas padrão NÃO são permitidas.
code-golf
restricted-source
hello-world
palindrome
lirtosiast
fonte
fonte
Hello, world!
eHello World!
são as únicas saídas permitidas para um programa olá mundo .Respostas:
/// , 37 bytes
fonte
TI-BASIC, 67 bytes
Isso funciona porque a última linha de um programa é exibida na tela, enquanto a primeira string é essencialmente tratada como um comentário.
Cada letra minúscula é armazenada como 2 bytes e os caracteres restantes têm 1 byte. Se eu dobrasse as regras e imprimisse em letras maiúsculas, seriam 41 bytes :
fonte
e
ei
(os números) para reduzir ainda mais a contagem de bytes?Eu sei que isso é um pouco tarde (e um pouco meticuloso), mas ...
> <> (Peixe),
474547 Bytes (realmente4345, se eu não estivesse usando a direção aleatória)Essas respostas são um pouco diferentes entre si; existe a possibilidade de qualquer direção do código ser executada.
Então, ao "imprimir no console", presumi que você quisesse imprimir no stdout. Isso gera um erro; o erro é lançado para stderr APÓS a sequência ser impressa em stdout.
Para provar que isso funcionava nos dois sentidos, usei o diretor de "direção aleatória", "x". O peixe é uma linguagem bidimensional, portanto, não importa para que lado o diretor aponte, o código ainda será (eventualmente) executado.
Supondo que o primeiro diretor aponte para a direita, os caracteres são carregados na "pilha" na ordem inversa e, em seguida, o reverso do reverso (ou o texto normal) é impresso.
Supondo que ambos os diretores apontem para a esquerda, os caracteres sejam, mais uma vez, carregados na "pilha" na ordem inversa (porque o código o carrega para trás aqui, a direção é para a esquerda) e depois o inverso (ou o texto normal) é impresso.
Se o diretor randomizado apontar para cima ou para baixo, isso não importa - o peixe sabe passar para a parte de baixo ou de fora do código, apontando de volta para o randomizador. Dessa forma, ele continuará fazendo loop com os randomizadores até que aponte para dentro, em direção ao código a ser executado.
O
!|o|!
bit faz o seguinte, de ambos os lados:!
pula a próxima instrução (sempre pula|
)|
é um refletor; aponta de volta para dentroo
.o
gera o item atual da pilha para o console como um caractere e o remove da pilha.Então, essencialmente, este é o truque "dois espelhos em um banheiro pressionados juntos", onde eu produzo até que não consiga mais.
Agora usando um emoji de gato.>o<
redireciona a saída para dentro infinitamente, ainda gerando o erro, mas posso fugir sem usar um pular para reflexão.Acontece que eu estava certo na primeira vez - a segunda tentativa não foi palindrômica , mas foi reflexiva .
Peixe (sem imprimir para stderr), 64 bytes (ew)
Esse cara é um pouco mais longo.
Possui a mesma função de seta aleatória (para provar que funciona nos dois sentidos) e não imprime no stderr.
A diferença aqui é óbvia; Eu literalmente imprimo todos os itens da pilha e finalizo a execução com
;
.O
!;
não termina a execução imediatamente, pois!
ignora o próximo item (exec final, neste caso) e continua até atingir o outro lado, que atua como;!
, no qual termina a execução antes de ignorar qualquer coisa.Segue o mesmo padrão de direção aleatória da resposta mais curta.
fonte
Chiclete , 38 bytes
fonte
Macarrão 0.0.2 , 52 bytes
Uma solução que não usa comentários. (Principalmente porque o macarrão não tem comentários ...)
fonte
CJam, 41 bytes
Obrigado a Dennis pelos três bytes de folga.
fonte
Foo, 39 bytes
Experimente online.
fonte
!tenalP ,sgniteerG"Greetings, Planet!
salva alguns bytes.JavaScript, 56 bytes
Isso pode ser executado em qualquer navegador.
fonte
print/tnirp
poralert/trela
, ele também funciona em outros mecanismos.alert`Greetings, Planet!`//`!tenalP ,sgniteerG`trela
é de 52 bytes #GolfScript, 41 bytes
Olha ma, sem ops! Experimente online no Web GolfScript .
A segunda metade do código-fonte armazena a string na segunda string.
imprimiria
fonte
C ++, 129 bytes
Tentar fazer isso sem comentários me levou a um profundo e escuro pesadelo de pré-processador, sem saída que eu pudesse ver. Em vez disso, eu apenas pretendi fazê-lo o mais curto possível.
fonte
Python 3, 57 bytes
Corrigi o problema entre parênteses.
Python 2, 53 bytes
Usei a vantagem da falta de parênteses e espaços necessários no Python 2, mas não havia muita diferença.
fonte
Gelatina, não concorrente
25 bytes Esta resposta não é competitiva, pois o desafio antecede a criação do Jelly.
Olha ma, sem comentários! Experimente online!
Como funciona
fonte
Preso , 41 bytes
Bastante semelhante à resposta CJam, exceto em Preso se um comando de impressão é emitido, a impressão automática da pilha é suprimida.
fonte
Mathematica, 52 bytes
Também gera um
Null "!tenalP ,sgniteerG"[tnirP]
que não é impresso.fonte
Echo
inv10.3
.Fissão ,
4543 bytesObrigado a jimmy23013 por salvar 2 bytes.
Experimente online!
R
inicializa um átomo que se move para a direita."
alterna o modo de string que simplesmente imprime a string desejada em STDOUT antes de bater;
, o que destrói o átomo e finaliza o programa. A primeira metade simplesmente nunca é executada.fonte
05AB1E , 16 bytes
Código:
Explicação:
Experimente online!
fonte
STATA, 52 bytes
di "Greetings, Planet!"//"!tenalP ,sgniteerG" id
Uma versão ligeiramente mais longa (53 bytes) que não usa comentários é:
#d [something]
altera o delimitador (inicialmente um retorno de carro) para a;
menos que [algo] sejacr
, então o primeiro comando altera o delimitador para;
, o segundo imprime a string e o terceiro (que continua até o final) aparentemente é um nop, embora eu não tenha idéia do porquê. Eu teria imaginado que isso geraria um erro (comando não reconhecido "! TenalP, sgniteerG" ou algo assim), mas aparentemente não.fonte
Japonês , 29 bytes
Essa linguagem de programação foi criada após a publicação da pergunta, mas não foi feita para esta questão.
Experimente online!
Cada
?
um é um caractere Unicode não imprimível: U + 0082, U + 000F, U + 000F e U + 0082, respectivamente.Curiosidade: se Japt tivesse sido publicado um mês antes, ele legitimamente venceria esse desafio.
fonte
APL, 41 bytes
Na APL, o último valor é impresso e o caractere da lâmpada (⍝) inicia um comentário.
fonte
GolfScript , 41 bytes
Experimente online!
fonte
TCL, 80 bytes
explicação: O TCL executa um processo global
unknown
quando encontra uma chamada para um comando indefinido, a primeira linha redefine o processo para um programa simples "olá mundo".As regras de citação do TCL são bastante sutis, um colchete aberto inicia uma palavra entre aspas que se estende até o próximo colchete próximo, permitindo palavras entre aspas e aninhadas. Chaves são tratadas como caracteres normais. cinco palavras:
}"!dlroW olleH"
,stup{
,sgra
,nwonknu
ecorp
. Nenhum comando nomeado}"!dlroW olleH"
foi definido; portanto, oundefined
proc da primeira linha é chamado.Uma pergunta semelhante foi postada no StackOverflow da antiguidade; que foi fechado e excluído desde então. Eu usei minha solução como uma amostra de TCL na língua nesta resposta e agora estou recebendo comentários pedindo uma explicação, então recrio minha resposta aqui.
fonte
Barril , 41 bytes
Experimente online!
fonte
Vitsy , 41 bytes
Essa linguagem de programação foi criada após a publicação da pergunta, mas não foi feita para esta questão.
O
Z
caractere envia tudo na pilha para STDOUT.Experimente online!
fonte
Cancelar a remoção de 98 a 49 bytes
O código acima contém dois caracteres não imprimíveis com o código 17 (controle de dispositivo 1) representado por
<DC1>
.fonte
MSM , 73 bytes
A primeira metade, pouco antes do meio,
,
cria uma sequência de saudação reversa, incluindo a adicionalG
à direita. O meio o,
solta e o resto é um programa canônico "Olá / Saudação / qualquer que seja". Os caracteres adicionais nas duas extremidades são necessários, porque a mensagem contém a,
. O da esquerda é executado e solta os
. Ambos,
es
precisam ser substituídos pelos pontos de concatenação esquerdos, daí osG
s. O,
lado direito não é executado, mas constrói a sequência final.fonte
CoffeeScript, 53 bytes
Semelhante ao Ruby e Lua e praticamente todas as variantes aqui.
fonte
Ruby, 43 bytes
fonte
Bash,
5248 bytesTambém funciona em ksh, zsh, yash, dash. Mas não tcsh.
fonte
Lua, 52 bytes
No terminal Lua, são apenas 44 bytes com
fonte
=
no terminal, então tem 2 bytes de distância. Eu acho que existia em 2015, não tenho certeza.Via Láctea 1.5.10 ,
434139 bytesExplicação
Uso
fonte