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.


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:



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!"

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.


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

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


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!"

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



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!

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#
/**/

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.


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.

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.


3

Mathematica, 52 bytes

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

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


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.


@ 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!


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.


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.


2

APL, 41 bytes

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

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


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


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.



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!


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


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.


1

CoffeeScript, 53 bytes

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

alert 'Greetings, Planet!'#'!tenalP ,sgniteerG' trela


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

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"=

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>

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.