Olá, Mundo, Palindrome

29

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.

lirtosiast
fonte
Isso não parece ser "olá mundo".
Erik the Outgolfer
4
@ ΈρικΚωνσταντόπουλος É o mesmo que Hello World para todos os efeitos. O objetivo é imprimir uma sequência curta que consiste em duas palavras com a pontuação comum também nos programas Hello World. Além dos embutidos que imprimem o Hello World, as soluções serão absolutamente idênticas (além da sequência real), independentemente da sequência real que está sendo impressa. (E eu assumir as "Saudações, Planeta!" Frase foi escolhido especificamente para fazer embutidos inútil.)
Martin Ender
11
@ MartinBüttner Acho que Hello, world!e Hello World!são as únicas saídas permitidas para um programa olá mundo .
Erik the Outgolfer

Respostas:

33

/// , 37 bytes

Greetings, Planet!/!tenalP ,sgniteerG
Dennis
fonte
10
Vai ser difícil de vencer.
PhiNotPi
16

TI-BASIC, 67 bytes

"!tenalP ,sgniteerG"
"Greetings, Planet!"

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 :

"!TENALP ,SGNITEERG"
"GREETINGS, PLANET!"
NinjaBearMonkey
fonte
Você pode usar ee i(os números) para reduzir ainda mais a contagem de bytes?
Addison Crump
11
@VTCAKAVSMoACE Eu considerei isso, mas eles em itálico e, portanto, parecem um pouco diferentes.
NinjaBearMonkey
Para ficar claro, a primeira linha não é um comentário, ela é armazenada na variável de resposta.
Julian Lachniet
12

Eu sei que isso é um pouco tarde (e um pouco meticuloso), mas ...

> <> (Peixe), 47 45 47 Bytes (realmente 43 45, se eu não estivesse usando a direção aleatória)

x"!tenalP ,sgniteerG"!|o|!"Greetings, Planet!"x

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 dentro o.

  • 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)

x"!tenalP ,sgniteerG"!;oooooooooooooooooo;!"Greetings, Planet!"x

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.

Addison Crump
fonte
Eu acho que você deve chamar o idioma> <> para distingui-lo do shell Peixe
Aaron
@ Aaron Geralmente, supõe-se que Fish aqui significa> <>, mas já encontrei esse problema antes - vou adicioná-lo. Obrigado!
Addison Crump
como eu acho, é imprevisível quando o código completo será extendido ou não. E se o contador do programa estiver preso entre duas instruções de direção aleatória, ou apenas preso em uma das instruções de direção aleatória, por exemplo, ele virar para baixo, chegar ao fundo, retornar a essa instrução e começar tudo de novo?
@GLASSIC O programa só produzirá uma vez e o código inteiro nunca será executado.
Addison Crump
11

Chiclete , 38 bytes

0000000: 73 2f 4a 4d 2d c9 cc 4b 2f d6 51 08 c8 49 cc 4b 2d 51 04  s/JM-..K/.Q..I.K-Q.
0000013: 04 51 2d 4b cc 49 c8 08 51 d6 2f 4b cc c9 2d 4d 4a 2f 73  .Q-K.I..Q./K..-MJ/s
Dennis
fonte
10

Macarrão 0.0.2 , 52 bytes

print "Greetings, Planet!""!tenalP ,sgniteerG" tnirp

Uma solução que não usa comentários. (Principalmente porque o macarrão não tem comentários ...)

Maçaneta da porta
fonte
15
Macarrão não tem comentários? ಠ_ಠ
Alex A.
8

CJam, 41 bytes

Obrigado a Dennis pelos três bytes de folga.

"!tenalP ,sgniteerG";"Greetings, Planet!"
The_Basset_Hound
fonte
2
Você precisa inverter as cordas. No momento, você está exibindo a saída correta e imprimindo a reversa.
NinjaBearMonkey
@NinjaBearMonkey Whoops. Fixação.
The_Basset_Hound
Também funciona no GolfScript.
Ilmari Karonen
7

Foo, 39 bytes

"Greetings, Planet!"!tenalP ,sgniteerG"

Experimente online.

um spaghetto
fonte
!tenalP ,sgniteerG"Greetings, Planet!salva alguns bytes.
Dennis
6

JavaScript, 56 bytes

Isso pode ser executado em qualquer navegador.

alert("Greetings, Planet!")//)"!tenalP ,sgniteerG"(trela
Downgoat
fonte
Substituindo print/tnirppor alert/trela, ele também funciona em outros mecanismos.
ETHproductions 04/12/2015
@ETHproductions não acredito que não pensei nisso, obrigado!
Downgoat 5/12/15
@ jrich você está certo, alert`Greetings, Planet!`//`!tenalP ,sgniteerG`trelaé de 52 bytes #
18/02/16
5

GolfScript, 41 bytes

"Greetings, Planet!":"!tenalP ,sgniteerG"

Olha ma, sem ops! Experimente online no Web GolfScript .

A segunda metade do código-fonte armazena a string na segunda string.

"Greetings, Planet!":"!tenalP ,sgniteerG"
"!tenalP ,sgniteerG"

imprimiria

Greetings, Planet!Greetings, Planet!
Dennis
fonte
5

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.

/**/
#include<cstdio>
int main(){puts("Greetings Planet!");}//*/
/*//};)"!tenalP sgniteerG"(stup{)(niam tni
>oidtsc<edulcni#
/**/
Luke
fonte
5

Python 3, 57 bytes

print('Greetings, Planet!')#)'!tenalP ,sgniteerG'(tnirp

Corrigi o problema entre parênteses.

Python 2, 53 bytes

print'Greetings, Planet!'#'!tenalP ,sgniteerG'tnirp

Usei a vantagem da falta de parênteses e espaços necessários no Python 2, mas não havia muita diferença.

Noomann
fonte
5

Gelatina, não concorrente

25 bytes Esta resposta não é competitiva, pois o desafio antecede a criação do Jelly.

»1ị“RsẈḄ,#ʠU“Uʠ#,ḄẈsR“ị1»

Olha ma, sem comentários! Experimente online!

Como funciona

»1ị“RsẈḄ,#ʠU“Uʠ#,ḄẈsR“ị1»  Main link. No arguments.

   “        “        “  »  Decompress all three strings; yield a list of strings.
    RsẈḄ,#ʠU               (decompresses to 'Greetings, Planet!')
             Uʠ#,ḄẈsR      (decompresses to ' WafdkmC Posited,')
                      ị1   (decompresses to 'Taarhus')

»1                         Take the maximum of the default argument (0) and 1.
  ị                        Select the string at the index to the left.
Dennis
fonte
4

Preso , 41 bytes

"Greetings, Planet!"p"!tenalP ,sgniteerG"

Bastante semelhante à resposta CJam, exceto em Preso se um comando de impressão é emitido, a impressão automática da pilha é suprimida.

Kade
fonte
3

Mathematica, 52 bytes

Print@"Greetings, Planet!""!tenalP ,sgniteerG"@tnirP

Também gera um Null "!tenalP ,sgniteerG"[tnirP]que não é impresso.

LegionMammal978
fonte
11
Para sua informação, muitas de suas respostas (incluindo esta) foram lançadas na fila de baixa qualidade porque são apenas um título / pontuação e código. Embora não haja nada de errado nisso, considere adicionar mais texto (como uma explicação) para que eles não sejam sinalizados automaticamente.
Mego
@ Megego Ok, pensei que eles eram bastante auto-explicativos.
precisa
11
Não estou dizendo que a falta de uma explicação é uma coisa ruim (embora as respostas com explicações tendam a receber mais votos), apenas estou informando que suas respostas (válidas) estavam sendo sinalizadas automaticamente por causa de seu tamanho. :)
Mego
2
você pode salvar 2 bytes com Echoin v10.3.
shrx
3

Fissão , 45 43 bytes

Obrigado a jimmy23013 por salvar 2 bytes.

;"!tenalP ,sgniteerG"R"Greetings, Planet!";

Experimente online!

Rinicializa 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.

Martin Ender
fonte
@ jimmy23013 Não tenho idéia, para ser sincero. Obrigado.
Martin Ender
3

05AB1E , 16 bytes

Código:

”!º¥,ÁÙ””ÙÁ,¥º!”

Explicação:

”!º¥,ÁÙ”          # Compressed string which results in "! Crm, Everywhere".
        ”ÙÁ,¥º!”  # Compressed string which results in "Greetings, Planet!".
                  # Top of stack is implicitly outputted.

Experimente online!

Adnan
fonte
2

STATA, 52 bytes

di "Greetings, Planet!"//"!tenalP ,sgniteerG" id

Uma versão ligeiramente mais longa (53 bytes) que não usa comentários é:

#d
di "Greetings, Planet!";"!tenalP ,sgniteerG" id
d#

#d [something]altera o delimitador (inicialmente um retorno de carro) para a ;menos que [algo] seja cr, 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.

marcações
fonte
2

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.

`!t?ÓP ,?Ä>ÎG`;`GÎ>Ä?, PÓ?t!`

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.

ETHproductions
fonte
2

APL, 41 bytes

'Greetings, Planet!'⍝'!tenalP ,sgniteerG'

Na APL, o último valor é impresso e o caractere da lâmpada (⍝) inicia um comentário.

TuxCrafting
fonte
Olá, e bem-vindo ao PPCG! Ótima resposta!
NoOneIsHere
2

GolfScript , 41 bytes

"Greetings, Planet!"#"!tenalP ,sgniteerG"

Experimente online!

Lordmusic Player
fonte
@muddyfish Editado. Agora é um palíndromo. Desculpe.
Lordmusic Player
2

TCL, 80 bytes

proc unknown args {puts "Hello World!"}
}"!dlroW olleH" stup{ sgra nwonknu corp

explicação: O TCL executa um processo global unknownquando 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, nwonknue corp. Nenhum comando nomeado }"!dlroW olleH"foi definido; portanto, o undefinedproc 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.

SingleNegationElimination
fonte
1

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.

"! tenalP, sgniteerG" Z "Saudações, planeta!"

O Zcaractere envia tudo na pilha para STDOUT.

Experimente online!

Addison Crump
fonte
1

Cancelar a remoção de 98 a 49 bytes

"!tenalP ,sgniteerG<DC1>"k,@,k"<DC1>Greetings, Planet!"

O código acima contém dois caracteres não imprimíveis com o código 17 (controle de dispositivo 1) representado por <DC1>.

pppery
fonte
1

MSM , 73 bytes

GGreetings, Planet!.................,.................!tenalP ,sgniteerGG

A primeira metade, pouco antes do meio, ,cria uma sequência de saudação reversa, incluindo a adicional Gà 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 o s. Ambos ,e sprecisam ser substituídos pelos pontos de concatenação esquerdos, daí os Gs. O ,lado direito não é executado, mas constrói a sequência final.

nimi
fonte
1

CoffeeScript, 53 bytes

Semelhante ao Ruby e Lua e praticamente todas as variantes aqui.

alert 'Greetings, Planet!'#'!tenalP ,sgniteerG' trela
rink.attendant.6
fonte
1

Ruby, 43 bytes

p"Greetings, Planet!"#"!tenalP ,sgniteerG"p
Semente de cacau
fonte
1

Bash, 52 48 bytes

echo Greetings, Planet!||!tenalP ,sgniteerG ohce

Também funciona em ksh, zsh, yash, dash. Mas não tcsh.

$ cat x.sh
echo Greetings, Planet!||!tenalP ,sgniteerG ohce
$ bash x.sh
Greetings, Planet!
$ ksh x.sh
Greetings, Planet!
$ zsh x.sh
Greetings, Planet!
$ yash x.sh
Greetings, Planet!
$ dash x.sh
Greetings, Planet!
$ tcsh x.sh
tenalP: Event not found.
$
Steve
fonte
11
Remova todas as aspas.
manatwork
11
Oh querida, uma resposta bash foi menor que python = /. De volta à prancheta!
Ashwin Gupta
1

Lua, 52 bytes

print"Greetings, Planet!"--"!tenalP ,sgniteerG"tnirp

No terminal Lua, são apenas 44 bytes com

="Greetings, Planet!"--"!tenalP ,sgniteerG"=
Veer digital
fonte
Minha culpa. Obrigado pelo alerta!
Digital Veer
Remova todos os parênteses. Para funções com um único parâmetro de sequência, elas são opcionais.
Manatwork
Lua 5.3 não requer =no terminal, então tem 2 bytes de distância. Eu acho que existia em 2015, não tenho certeza.
val diz Reinstate Monica
1

Via Láctea 1.5.10 , 43 41 39 bytes

"Greetings, Planet!"!tenalP ,sgniteerG"

Explicação

"Greetings, Planet!"                       # push the string to the stack
                    !                      # output the TOS
                     tenalP ,sgniteerG"    # throws an error and exits

Uso

python3 milkyway.py <path-to-code>
Zach Gates
fonte
Você realmente precisava de um comentário? Se isso for baseado em pilha (sem saída implícita), apenas a saída da pilha deve funcionar.
Addison Crump
Você está certo! Obrigado. @FlagAsSpam
Zach Gates