Jump to content

[Concurso de Código] Tornar Python Ilegível


JoaoRodrigues
 Share

Recommended Posts

Boas a todos! Isto parte de uma iniciativa minha (daí se falhar, não se admirem 😞) para estimular aí essas mentes pythonicas. Agora que até somos uns 6 ou 7 (uuuh!) a postar regularmente aqui na secção, e com pessoas de fora a começarem a interessar-se, vinha-vos lançar um desafio.

Todos reconhecemos que Python é uma linguagem interessante não só devido ao seu poder e potencial, mas também devido à facilidade de ler código dos outros e assim aprender por exemplo. Mas, também conhecemos características da linguagem que a tornam completamente ilegível ao olho mais incauto, e mesmo ao já "habitué", trocam os olhos por uns segundos.

Daí, o que vos vinha propôr, era uma brincadeira. Conseguem em poucas linhas de código (digo isto para não me escreverem programas longos), tipo uma função ou um script, escrever o mais exacrável exemplo de código Python, QUE FUNCIONE? Exercitem aí as mentes para fugir ao KISS (Keep it simple stupid) 😞

Nota, neste "concurso" não há vencedores 🙂 As entradas vão ser colocadas por ordem de complexidade do armazém de código para mostrar aos n00bs a l33tice que python pode atingir 🙂

Abraço! E participem 🙂

EDIT: resultados ordenados e com explicação neste tópico: http://www.portugal-a-programar.pt/forums/topic/0-find-topic/?do=findComment&comment=184972

Link to comment
Share on other sites

  • Replies 54
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

A intenção deste tópico era escrever código com um propósito simples, mas usando "features" de python que o tornem quase ilegível. Sim, ou seja, recorrendo às funções lambda, entre outras, "obfuscar" um código simples em algo que à partida, pareça saído das profundezas do kernel de um OS obscuro 😞

Link to comment
Share on other sites

try:
raw_input('Executar "%s"? [Y/n]' % ''.join(map(lambda x: chr(x*4/8), [228, 218, 64, 90, 228, 204, 64, 94])))
except:
print "\nOk! ",
try:
import os, time
print "Executanto...",
time.sleep(3)
except:
print "\nMais nada nao? Executando AGORA!",
pass
print
os.system("%s" % ''.join(map(lambda y: chr(y), map(lambda z: z*3/9, [102, 240, 174, 96, 324, 333, 324, 102, 96, 333, 312, 297, 303]))[::-1]))

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

Não tenho assim nada assim tão mau, o pior que tenho será talvez este:

print "The age of your date should at minumum be: " + str(int([age / 2 + 7 for age in [int(raw_input("How old are you? "))]][0]))

One-liner para calcular a idade mínima da pessoa que vocês podem namorar, considerando a vossa idade.

Utiliza esta fórmula do xkcd 😞

EDIT: E até nem acho que o código esteja assim tão mau...

Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente 😄

Link to comment
Share on other sites

Loool espero que isto seja um troca olhos 😞


class Ab:
pass

complica=Ab()
complicamais=Ab()
complica.abc=[]
complicamais.abc=[]

for i in range(61, 80, 1):complica.abc.append(i)
for i in range(len(complica.abc)-1, -1, -1):complicamais.abc.append(complica.abc[i])
                    
for i in range(0, len(complica.abc), 1):
complica.abc[i]=str(complica.abc[i]).decode('hex')
complicamais.abc[i]=str(complicamais.abc[i]).decode('hex')

print complica.abc
print complicamais.abc

RHCE - 120-062-534

Link to comment
Share on other sites

Eu até punha o código do Wataplayah e ganhava! 😁 Mas não... 😞

Eu não vou pôr nada, primeiro, porque eu só faço código legível, segundo, ninguém bate o djthyrax em ilegibilidade de código... Principalmente com os lambdas! 😞

Link to comment
Share on other sites

Ainda tive aqui umas horas a ver se conseguia fazer uma calculadora em uma linha, mas não me lembrei de nenhuma maneira de guardar o output 😞 (E acho que usar o ";" seria batota).

Por isso entretive-me e adicionei mais umas linhas 😞

hentai = __builtins__.__import__("re")
porn = __builtins__.__import__("sys")
exec("vars()['lol'] = raw_input('Operacao: ')")
eval("porn.stdout.write(str(reduce(lambda x, y: x %s y, [float(n) for n in hentai.search(hentai.compile('(\d{1,99}) *?([\+|\-|\*|\/]) *?(\d{1,99})'), vars()['lol']).groups() if n.isdigit()])))" % hentai.search(hentai.compile('(\d{1,99}) *?([\+|\-|\*|\/]) *?(\d{1,99})'), vars()['lol']).groups()[1])

Só pode efectuar uma operacao de cada vez (2+2, 2*2, 4/1, etc.)

Pode ter espaços entre os números e os sinais (2+2, 2 + 2, 2+ 2, 2 +2, 2 +                      2, etc. 🙂 )

Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente 😄

Link to comment
Share on other sites

Isto em Haskell tinha muito mais piada  😉

Tenho que estudar melhor o Python, posse ser que também dê para fazer alguma coisa...

Haskell nem te precisas de esforçar! Haskell é tipo o meu código C! Só a pessoa que escreve é que percebe (no C é o meu caso)! 🙂

Link to comment
Share on other sites

Desculpem lá, mas este tópico é um bocado ESTÚPIDO  😉, em vez de ensinar a programar bem, faz exactamente o contrario  :bored:.....

eval('print \'\\f\\n\\d\\s\'')

Isto não é difícil de entender, mas é muito...., vá... ESTÚPIDO, e há quem o faça  🙂

Link to comment
Share on other sites

Desculpem lá, mas este tópico é um bocado ESTÚPIDO  😉, em vez de ensinar a programar bem, faz exactamente o contrario  :bored:.....

eval('print \'\\f\\n\\d\\s\'')

Isto não é difícil de entender, mas é muito...., vá... ESTÚPIDO, e há quem o faça  🙂

Mas a ideia e mesmo dificultar, eu no codigo que postei tambem so criei a class para baralhar mais as coisas ela não era precisa para nada, e o programa comportava-se da mesma maneira 😕

mas dá ideia do como podes fazer coisas "diferentes", como usar classes como conteiners, modulo re para pesquisas, usar caracteres pelo seu código ascii tudo coisas úteis em outros contextos!!! 

RHCE - 120-062-534

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.