
Pycontest, es un concurso que busca obtener la solución mas pequeña al problema de convertir un número dado a un formato de display de 7 leds.
"31415" se verÃa algo asi:
 _           _
 _|  ||_|  ||_
 _|  |  |  | _|
El premio es un teclado!.
Mi código tiene 185 caracteres con lo que me pone en puesto 194(al momento que lo envié), aquà está:
def seven_seg(x): return "".join(["".join([[' _|','   ','|_ ','| |',' _ ','|_|','  |'][int("435166402400156420425466455450"[3*int(j):3*int(j)+3][i])] for j in x])+"\n" for i in 0,1,2])
Ahora que lo veo y lo pienso con calma se me ocurren algunas mejoras que se le pocrÃan hacer para ocupar menos espacio:
- 
PodrÃa hacerlo mas corto si lo hiciera recursivamente, seven_seg("801") = seven_seg("8")+seven_seg("01")o algo por ahi, asignar la función a una variablef()para ahorrar espacio. Quizas usandolabmda
- 
Se debe comprimir mi numero "435166402400156420425466455450" a alguna base mayor (36) para que ocupe menos espacio. AhorrarÃa unos 10 bytes 
- 
Comprimir el número en caractéres no ASCII(almacenar en los bytes) para ocupar menos espacio podrÃa ayudar, usar ord("numero"[n]). Ése número de 30 bytes es demasiado grande deberÃa ocupar sólo 10.
- 
PodrÃa reordenar el arreglo [' _|',' ','|_ ','| |',' _ ','|_|',' |']para evitar muchos caracteres que se repiten y usarlo como un solo string, ahorrarÃa 18 bytes en las comas y apóstrofes mas unos cuantos bytes extra.
El concurso termina hoy asà que no le dediqué mas tiempo a pensarlas e implementarlas :-P
En realidad convertir el número a base 36 no ahorra tanto espacio, debido a las funciones int(s,36) y str() que habrÃa que usar. Acabo de convertir el número y salio 166ucclerfg2crw6zdlm
El actual ganador tiene un código de 119 bytes!
Ya es muy tarde para enviarlo nuevamente, pero tengo una pequeña mejora, como 10 bytes menos:
def seven_seg(x): return "".join(["".join([[' _|','   ','|_ ','| |',' _ ','|_|','  |'][int("435166402400156420425466455450"[3*int(j)+i])] for j in x])+"\n" for i in 0,1,2])
Comments
#90" title="2006-01-03 03:13:55">Q_NERD: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ...
