Um palíndromo é uma sequência que é a mesma para a frente e para trás, como "carro de corrida".
Escreva um programa em alguma linguagem L, que aceite qualquer programa P1 na linguagem L e emita um programa palindrômico P2 na linguagem L que faça a mesma coisa que P1.
Você não precisa se preocupar em lidar com programas de entrada com erros de sintaxe.
Isso é código de golfe , então a solução com o menor número de bytes vence.
code-golf
palindrome
Peter Olson
fonte
fonte
x=input();print(x+'#'+x[::-1])
. O subconjunto é o conjunto de todos os programas que não incluem novas linhas.Respostas:
Perl,
5554 bytesLê a fonte do programa a partir de stdin e grava em stdout.
Resultado da execução em si mesmo:
fonte
__DATA__
que é lido .. por exemplo.print while(<DATA>);\n__DATA__
vai mudar o comportamento.__DATA__
. :)Java, 225 bytes
Saída em si mesma (quando previamente pré-determinada):
fonte
Python 2, 68 bytes
Não funciona se executado a partir do IDLE, porque você precisa gerar um caractere EOF para impedir que o programa aguarde a entrada.
Saída quando executado em si mesmo:
Agradecemos a Greg Hewgill por ajudar a resolver problemas e jogar golfe.
fonte
GolfScript,
109 bytesMuito semelhante à solução da minitech , mas funciona bem com novas linhas. Ele se baseia no comportamento engraçado (e não documentado) do GolfScript para ignorar um inigualável (e não comentado)
}
, bem como tudo o que se segue.Ele falhará se a entrada contiver uma inigualável
{
, mas isso tecnicamente constituiria um erro de sintaxe.Como funciona
Exemplo
fonte
1\n2#
(\n
seria um caractere de nova linha real) como sua entrada.código de máquina x86 no DOS (
.com
arquivo) - 70 bytesLidando com arquivos .COM, é fácil criar uma síndrome, já que o "carregador" COM apenas coloca o conteúdo do arquivo no endereço
100h
e salta para lá, o programa já deve codificar seu final de alguma forma e ignorar tudo depois dele, para que possamos acrescentar o inverso dos primeiros bytes N-1 (apenas uma ressalva: se o programa de alguma forma tentar fazer truques com o tamanho do arquivo, tudo quebra).Aqui está o dump hexadecimal do meu
.COM
-palyndromizing.COM
:Ele pega o arquivo de entrada na linha de comando e grava a saída no stdout; o uso esperado é algo parecido
compalyn source.com > out.com
.Montagem comentada:
Testado em si mesmo e as soluções para uma pergunta anterior parecem funcionar bem no DosBox, seguirão alguns testes mais extensos em executáveis "canônicos" do DOS.
fonte
GolfScript, 8
Não lida com novas linhas, mas ninguém as utiliza no GolfScript.
fonte
Bash + coreutils, 39 bytes
Lê de STDIN e sai para STDOUT:
fonte
( echo 'Hello, World!' )
. O bash praticamente ignora tudo após oexit
.Javascript ( ES6 ) Várias linhas - 71
Meio que roubou o método de comentários de Quincunx aqui:
Linha única - 49
fonte
C ++,
214209 bytesResultado da execução em si mesmo:
fonte
Brainfuck, 749 sem espaço em branco (não jogando golfe)
Isso produz programas de cérebro que espelham palíndromos, ou seja, são imagens espelhadas de si mesmos.
Dado um programa, ele gera
com
PROGRAM
eMIRROR
substituído pelo programa (sem caracteres que não sejam do cérebro) e sua imagem no espelho.fonte
C 168
175Manipula corretamente a nova linha de escape dentro do código-fonte
Editar 1 bug corrigido quando a última nova linha estiver ausente
Editar 2 bug corrigido quando a linha dentro do comentário terminar com
*
: adicione um caractere de tabulação antes do//
comentário(e jogue mais
C99 Padrão, código válido, muitos avisos
Ungolfed
fonte
/* *<NL> */int main(){}
C # - 174
Entrada de teste:
Saída de teste:
fonte
//
o final de cada linha agora.PHP, 96 bytes
Uso da amostra:
Isso não é nada inteligente. É apenas um simples código que faz o trabalho ... Eu estava com vontade de jogar. Eu sei que esse código está repleto de más práticas de programação!
Por fim, terei prazer em aceitar qualquer crítica e edição deste código!
fonte
Cobra - 134
fonte
Raquete 133
Ungolfed (mas ainda muito imperativo):
Saída quando recebida a versão não destruída como entrada:
fonte