JoaoRodrigues Posted April 20, 2008 at 02:45 PM Report Share #180114 Posted April 20, 2008 at 02:45 PM 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 More sharing options...
newbeen Posted April 20, 2008 at 04:28 PM Report Share #180137 Posted April 20, 2008 at 04:28 PM Mas estas a falar de Ofuscação de código, ou escrita de funções que ninguém percebe, tipo as lambda do djthyrax??? RHCE - 120-062-534 Link to comment Share on other sites More sharing options...
JoaoRodrigues Posted April 20, 2008 at 04:32 PM Author Report Share #180138 Posted April 20, 2008 at 04:32 PM 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 More sharing options...
djthyrax Posted April 20, 2008 at 04:58 PM Report Share #180141 Posted April 20, 2008 at 04:58 PM 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 More sharing options...
JoaoRodrigues Posted April 20, 2008 at 05:08 PM Author Report Share #180144 Posted April 20, 2008 at 05:08 PM 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? 😞 Link to comment Share on other sites More sharing options...
djthyrax Posted April 20, 2008 at 05:25 PM Report Share #180146 Posted April 20, 2008 at 05:25 PM Eheh... 😞 Fiz agora um pequeno tweak btw. 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 More sharing options...
rolando2424 Posted April 20, 2008 at 09:17 PM Report Share #180218 Posted April 20, 2008 at 09:17 PM 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 More sharing options...
newbeen Posted April 20, 2008 at 10:23 PM Report Share #180233 Posted April 20, 2008 at 10:23 PM 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 More sharing options...
Tharis Posted April 20, 2008 at 10:32 PM Report Share #180234 Posted April 20, 2008 at 10:32 PM 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 More sharing options...
rolando2424 Posted April 20, 2008 at 11:29 PM Report Share #180257 Posted April 20, 2008 at 11:29 PM 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 More sharing options...
djthyrax Posted April 21, 2008 at 12:07 AM Report Share #180270 Posted April 21, 2008 at 12:07 AM rolando, isso é mesmo caso para dizer: PORRA! Já agora, aqui fica mais outro exemplo http://www.portugal-a-programar.pt/forums/topic/0-find-topic/?do=findComment&comment=180269 😞 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 More sharing options...
newbeen Posted April 21, 2008 at 08:10 PM Report Share #180438 Posted April 21, 2008 at 08:10 PM O modulo RE é a melhor coisa para tornar o código ilegível, torna o python parecido com Perl 😁 RHCE - 120-062-534 Link to comment Share on other sites More sharing options...
djthyrax Posted April 21, 2008 at 08:11 PM Report Share #180440 Posted April 21, 2008 at 08:11 PM O modulo RE é a melhor coisa para tornar o código ilegível, torna o python parecido com Perl 😁 ROFL! 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 More sharing options...
Rui Carlos Posted April 21, 2008 at 09:13 PM Report Share #180469 Posted April 21, 2008 at 09:13 PM Isto em Haskell tinha muito mais piada 😉 Tenho que estudar melhor o Python, posse ser que também dê para fazer alguma coisa... Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Tharis Posted April 21, 2008 at 09:22 PM Report Share #180475 Posted April 21, 2008 at 09:22 PM 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 More sharing options...
rolando2424 Posted April 21, 2008 at 09:34 PM Report Share #180480 Posted April 21, 2008 at 09:34 PM Bah, mas o código é na realidade muito simples, depois se quiserem, eu explico 😉 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 More sharing options...
Rui Carlos Posted April 21, 2008 at 09:36 PM Report Share #180483 Posted April 21, 2008 at 09:36 PM 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,[[]]) Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Tharis Posted April 21, 2008 at 10:18 PM Report Share #180495 Posted April 21, 2008 at 10:18 PM É o que eu digo, tornar Python ilegível só programação funcional! Link to comment Share on other sites More sharing options...
fnds Posted April 22, 2008 at 12:42 PM Report Share #180562 Posted April 22, 2008 at 12:42 PM 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 More sharing options...
newbeen Posted April 22, 2008 at 12:54 PM Report Share #180565 Posted April 22, 2008 at 12:54 PM 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now