Olá pessoal,
Hoje finalizamos o ciclo de desafios mensal do I Desafio do PUG-PE Challenge! Para quem não conhece esse tal desafio, ele é um desafio semanal onde são propostos problemas triviais que podem ser resolvidos com Python. Estes problemas são postados todas sexta-feiras e os códigos/soluções propostas são enviados por membros do grupo PUG-PE. Nisso há uma votação para escolha da solução mais criativa e a mais pythonica, onde há uma distribuição de pontos/ranking. O primeiro do ranking ao final do mês ganhará brindes do pug-pe como canecas, adesivos ou camisas!
O campeão deste mês foi o nosso membro Lauro Moura (@lauromoura) que venceu invicto com diferença de 6 pontos pra o segundo-lugar! Parabéns Lauro 😀
A proposta deste desafio não é nem a competição, que é saudável… mas a discussão entre os membros sobre as soluções propostas para variados problemas diários de programação. Muitos gostaram também por usarem práticas de TDD, pois todos os códigos tem os testes associados, onde estes devem passar para a solução ser aceita!
Agradecemos a todos e quem quiser participar do II Desafio, se inscreva na nossa lista e nos envie um email e acompanhe o nosso repositório no Github do PUG-PE Challenge!
Agradecemos ao nosso colega Nielson (@nielsonnas) pelo apoio com a criação do Site de Pontuação do PUG-PE Challenge!
Valeu !
Vamos a alguns problemas e soluções bem criativas:
I Desafio do PUG-PE
Solução por Lauro Moura:def pack(items):import itertoolsreturn [list(v) for k, v in itertools.groupby(items)]Solução por Rafael Caricio:def pack(l):return reduce(lambda x,y:((len(x)==0 or (len(x)>0 and x[-1][0]!=y)) and \x+[[y]]) or x[:-1]+[x[-1]+[y]], l, [])II Desafio do PUG-PE ChallengeSolução apresentada por Marcel Caraciolo
def shortestpath(graph,start,end,path,pathes=[]):path = path[:]path+= [start]if start == end:return pathshortest = Nonefor neighbor in graph[start]:if neighbor not in path:newPath = shortestpath(graph,neighbor,end,path)if newPath:if not shortest or len(newPath) <= len(shortest):shortest = newPath[:]pathes.append(tuple(shortest))return shortestdef short_path(graph,start,end):if not graph or (start not in graph) or (end not in graph): return Nonepathes = []shortestpath(graph,start,end,[],pathes)return pathesIII Desafio do PUG-PE
Solução por Genivaldodef tuplify(a):return None if len(a)==0 else map(lambda x: tuple(a[x:x+2]), \range(0,len(a)-1,2)) or NoneSolução por Lauro Moura:def tuplify(n):'''Returns a list of 2-tuples from the provided data'''return zip(n[::2], n[1::2]) or NoneIV Desafio do PUG-PE
Solução por Marcel Caraciolo:transpose = lambda lista: map(list, zip(*lista))Solução por Nielson Santana:transpose = lambda l: reduce(lambda x,y: x+[list(y)],zip(*l),[])Parabéns a todos os participantes! Muitas soluções alieníginas e interessantes!Até a próxima,Marcel CaracioloFiled under: avisos | Tagged: challenge, desafios, github, problemas, PUG-PE, python | Leave a comment »