Escreva um programa para testar se uma sequência é palindrômica, com a condição adicional de que o programa seja palindrômico.
code-challenge
palindrome
marcog
fonte
fonte
Respostas:
Rubi
Imprime 1 se a entrada for um palíndromo, 0 se não for. Entrada sem quebra de linha.
Não usa nenhum comentário, mas usa dois truques:
0
é true-ish no Ruby (apenasnil
e éfalse
avaliado como falso), portanto1&&z==esrever.z* stup
não é avaliado e, portanto, não pode gerar uma exceção de tempo de execução*
): Para evitar um erro de sintaxez=esrever.z stup
, forçamos o analisador a analisar isso comoz=esrever.z()*stup
adicionando a*
. Por outro lado, o*
é analisado como um operador de splat, que em uma chamada de função divide um array em uma série de parâmetros. Se existe apenas um elemento em vez de uma matriz, basicamente não faz nada, entãoputs *foo
é equivalente aputs foo
.Solução óbvia usando comentários (imprime verdadeiro / falso):
fonte
Python sem comentário
Estou surpreso que ninguém tenha encontrado esse truque ainda, ele deve funcionar na maioria dos idiomas!
fonte
print
instrução e, se você permitir que a entrada especificada entre aspasraw_input()
possa ser reduzidainput()
. Faltando um '=' extra no início."a\"#;w==]1-::[w;)(tupni_war=w;";w=raw_input();w[::-1]==w;#"\a"
Perl
perl -nle "$s=$_ eq+reverse;print$s;s$tnirp;esrever+qe _$=s$"
truques sem comentários, apenas abusando habilmente do operador de substituição (ei, variáveis perl começam com $ também, e daí?)
fonte
Python 2.7
fonte
C
Exemplo em execução:
fonte
Golfscript
fonte
PHP
Fatos:
$z
string, a string de entrada para verificar$t
booleano, TRUE se a sequência de entrada$z
for palíndromo, FALSE caso contrário$t
A razão pela qual não será possível implementar o verificador palíndromo palíndromo no PHP é porque as variáveis PHP são nomeadas começando com a
$
. Você não pode terminar um nome de identificador com$
no PHP.fonte
PHP
Usa alguns truques estranhos para evitar o
$
problema, tecnicamente não é um palíndromo, pois eu tive que me infiltrar;
no final.Este é um trabalho que usa os
/* */
comentários do PHP e o fato de que você não precisa do fim para eles.fonte
eval
deve serlave
.CoffeeScript
Na verdade, lutei com as grafias reversas de 'split', 'reverse' e 'join': \
fonte
Groovy
fonte
Python 3, 55 bytes
Usa um comentário, mas é mais curto que o outro Python que usa comentários.
fonte
Fuzzy Octo Guacamole , 17 bytes
Não sei exatamente como a vitória está definida, mas eu coloco a contagem de bytes no topo.
^
obtém a entrada e a envia para a primeira pilha.C
copia a primeira pilha para a segunda.z
inverta a parte superior da pilha, para que "as" se torne "sa"..
muda a pilha ativa, para que a pilha ativa tenha a entrada e a inativa a entrada reversa.=
verifica a igualdade, retornando0
à igualdade.i
inverte os ToS,0
torna - se1
, e qualquer outra coisa se tornaFalse
._
aparece e define a variável temp que é;
impressa.@
finaliza o programa manualmente, para não atingir a parte invertida. Isso faz o palíndromo.fonte
Javascript
Difícil de fazer isso sem comentários ...
fonte