• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JoaoRodrigues

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

55 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas estas a falar de Ofuscação de código, ou escrita de funções que ninguém percebe, tipo as lambda do djthyrax???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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]))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

PRONTO! O tirácio acertou no que eu queria :( Btw, GRANDE cena miudo :) Muito mas mesmo MUITO bem pensado :) Guarda a explicação para o final ok? :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu até punha o código do Wataplayah e ganhava! :biggrin: 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! :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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. :))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O modulo RE é a melhor coisa para tornar o código ilegível, torna o python parecido com Perl  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O modulo RE é a melhor coisa para tornar o código ilegível, torna o python parecido com Perl  :cheesygrin:

ROFL!
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto em Haskell tinha muito mais piada  ;)

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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)! :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bah, mas o código é na realidade muito simples, depois se quiserem, eu explico ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esta é uma das minhas funções preferidas em Haskell (não por ser muito ilegível, mas por comprimir uma função que podia parecer complicada).

def powerset(list):
  return reduce(lambda x, y: x+(map(lambda z:z+[y],x)),list,[[]])

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É o que eu digo, tornar Python ilegível só programação funcional!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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 :confused:

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A ideia não é postar coisas estúpidas, sem nexo, ou idiotas. É postar código de qualidade, simplesmente não muito legível :)

Ou achas estúpida a calculadora do rolando em menos de 3 linhas? Ou a quantidade de código com funções que aqui está ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou achas estúpida a calculadora do rolando em menos de 3 linhas? Ou a quantidade de código com funções que aqui está ;)

Eu rulo :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu exprimentei mas fiz

print "%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])

just in case ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora