quarta-feira, 16 de maio de 2012

etbjxntqrdke

Ontem havia duas reuniões sendo travadas ao meu redor; eu não participava de nenhuma, mas sofria com a gritaria das duas. Como no Brasil é falta de educação apontar a falta de educação dos outros, tive que me contentar com alterar a mensagem do MSN.

Então, um colega me apontou um sítio que vende uma camiseta com a seguinte linha de Perl:

perl -e '
"$a="etbjxntqrdke";
$a=~s/(.)/chr(ord($1)+1)/eg;
print "$a\n;"'
Claro, achei muito explicadinho e limpinho e resolvi arrumar as coisas para manter a má fama do Perl.

perl -e "map { print chr 1+ ord } 'etbjxntqrdke'=~/./g"
Achei o resultado esteticamente aprazível.

6 comentários:

Claudio disse...

s = ''
for c in 'etbjxntqrdke':
s += chr(ord(c)+1)
print s


(ja' que eu estava curioso, mas com preguica de fazer de cabeca, e sem um interpretador perl 'a mao ...)

Claudio disse...

Pensando bem, como disse o mestre, one-liners sao cool, alem de nao tao obvios para uma olhada rapida :)

''.join(map(lambda c: chr(ord(c)+1), 'etbjxntqrdke'))

Ed.Londero disse...

Aqui no teletrabalho passei a tarde tranquilo ouvindo bach, paganini, folk, o programa do front da ciencia sobre o Tesla, escrevendo triguers mecanicamente e discutindo hash pelo msn com o Marcus.
Falaram de quê ?

forinti disse...

Parece que disparei um golfe! Vou tentar mais uma tacada:

perl -e "print chr 1+ ord foreach split //,'etbjxntqrdke'"

forinti disse...

E mais uma!
perl -e "print chr 1+ ord for split //,'etbjxntqrdke'"

Marcus Aurelius disse...

Em Lua:

print((string.gsub('etbjxntqrdke', '.', function(s) return string.char(string.byte(s)+1) end)))

Não tão compacto, mas no estilo "1 linha".

Testável aqui:
http://www.lua.org/cgi-bin/demo