Ir para o conteúdo
JoaoRodrigues

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

Mensagens Recomendadas

JoaoRodrigues    0
JoaoRodrigues

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JoaoRodrigues    0
JoaoRodrigues

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

Partilhar esta mensagem


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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JoaoRodrigues    0
JoaoRodrigues

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
rolando2424    7
rolando2424

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
newbeen    0
newbeen

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tharis    3
Tharis

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
rolando2424    7
rolando2424

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. :))

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

Isto em Haskell tinha muito mais piada  ;)

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tharis    3
Tharis

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

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,[[]])

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
newbeen    0
newbeen

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JoaoRodrigues    0
JoaoRodrigues

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á ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
rolando2424    7
rolando2424

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
newbeen    0
newbeen

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 ;)

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade