Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Novlucker en 12 Enero 2011, 15:12 pm



Título: [RETO+Python] Buscando rangos
Publicado por: Novlucker en 12 Enero 2011, 15:12 pm
He aquí un nuevo reto a ver quién lo tiene más corto >:D

El input del programa será una lista de números mayores a 0 ordenados y separados por espacios.
El script debe de encontrar rangos de números consecutivos y agruparlos, y dejar los que no estan consecutivos separados.
El output serán esos rangos separados por coma y espacio.

Ej:
Código:
INPUT: 1 2 5 8 9 10 11 18
OUTPUT: 1-2, 5, 8-11, 18

INPUT: 3 6 9 10 12 13
OUTPUT: 3, 6, 9-10, 12-13

Saludos!


Título: Re: [RETO+Python] Buscando rangos
Publicado por: mr.blood en 12 Enero 2011, 15:32 pm
Una pregunta, meter los datos desordenados no valdria no ??? ;).

Sa1uDoS


Título: Re: [RETO+Python] Buscando rangos
Publicado por: Novlucker en 12 Enero 2011, 15:38 pm
No, los datos se ingresan ordenados y se considera que se mete una muestra "buena", así que no es necesario verificar nada. Además eso se arreglaría con un simple sort,por eso directamente lo he obviado.

Saludos


Título: Re: [RETO+Python] Buscando rangos
Publicado por: Karcrack en 12 Enero 2011, 16:18 pm
Me apunto >:D

Por cierto, se devuelve una cadena de texto, no?


Título: Re: [RETO+Python] Buscando rangos
Publicado por: Novlucker en 12 Enero 2011, 16:31 pm
Exacto, imprimir una cadena. Yo por ahora tengo un código funcional pero me resulta muy largo, y se que se puede hacer más corto, así que voy a ver si tomo las cosas por otro lado :P

Saludos


Título: Re: [RETO+Python] Buscando rangos
Publicado por: ukol en 12 Enero 2011, 21:24 pm
Jaja me gustan estos retos  :D
No he contado pero ahi va el mio, en mi estilo ONE-LINE
la entrada va en l, no la he recogido, voy a cenar ya no tengo tiempo
ME ha costado un buen rato, depurar cosas de 1 linea es superchungo
Código
  1. for i in reduce(lambda l,x:l[:-1]+[l[-1]+[x][x-l[-1][-1]-1:]]+[[x]][:x-l[-1][-1]-1],l[1:],[l[0:1]]):print str(i[0])+(len(i)-1 and'-'+str(i[-1])or''),',',
  2.  
con
Código:
l=[1,3,5,6,7,8,10,13,14,17]
output
Código:
1 , 3 , 5-8 , 10 , 13-14 , 17 ,
Cuente Cuente, son 3 ojos! (no sé cuantos bytes  :laugh:)


Título: Re: [RETO+Python] Buscando rangos
Publicado por: Karcrack en 12 Enero 2011, 21:35 pm
Ukol, no estas cumpliendo los requisitos del reto! Has de recibir una cadena de numeros separados por espacios...


Título: Re: [RETO+Python] Buscando rangos
Publicado por: Novlucker en 12 Enero 2011, 22:19 pm
Eso mismo, y la salida debe de ser número->coma->espacio->otra vez :P
154 bytes, pero te falta el input :P

Saludos


Título: Re: [RETO+Python] Buscando rangos
Publicado por: Karcrack en 13 Enero 2011, 15:52 pm
Lo minimo que he conseguido, cumpliendo todas las reglas del reto, han sido 153 bytes :-\
Código
  1. e,s=1,''
  2. def m(x,y):
  3. global e,s
  4. if int(x)-int(y)-1:s+=y+', ';e=1
  5. elif e:s+=y+'-';e=0
  6. return 0
  7. a=sorted(raw_input().split(),cmp=m)[-1];print s+a
Supongo que debe haber una forma mas simple, pero no se me ocurre :laugh:

Un saludo :D


Título: Re: [RETO+Python] Buscando rangos
Publicado por: Karcrack en 16 Enero 2011, 19:07 pm
Nadie mas? Uiiis.. que soso el reto :P


Título: Re: [RETO+Python] Buscando rangos
Publicado por: fallout20xx en 17 Enero 2011, 09:11 am
Nadie mas? Uiiis.. que soso el reto :P
Demasiado level tio jejejeje si quieres mas participantes esperate antes de postear jajajaja
un saludo  ;-)


Título: Re: [RETO+Python] Buscando rangos
Publicado por: Karcrack en 18 Enero 2011, 17:40 pm
Venga Novlucker! No dejes un reto a medias :rolleyes: :rolleyes: :P


Título: Re: [RETO+Python] Buscando rangos
Publicado por: Novlucker en 18 Enero 2011, 17:56 pm
Dame tiempo que estoy "luchando" con otras cosas :xD

Saludos


Título: Re: [RETO+Python] Buscando rangos
Publicado por: Karcrack en 31 Enero 2011, 18:30 pm
Debe ser una batalla feroz.... >:D :laugh: :laugh: