Diferencia entre revisiones de «Genera-intervalos.py»

De FJWiki
Saltar a: navegación, buscar
(Página nueva: Este script en Python procesa una lista de números en entrada estándar y la pasa a "intervalos". Por ejemplo: <source> # genera-intervalos.py << EOF > 1 > 2 > 3 > 5 > 6 > 7 > 9 > 1...)
 
(Sin diferencias)

Revisión actual del 19:38 3 may 2009

Este script en Python procesa una lista de números en entrada estándar y la pasa a "intervalos". Por ejemplo:

# genera-intervalos.py << EOF
> 1
> 2
> 3
> 5
> 6
> 7
> 9
> 15
> 18
> 19
> 20
> EOF
1-3
5-7
9
15
18-20


Código de genera-intervalo.py

#!/usr/bin/python
#Hecho por FJ

import sys

if __name__ == '__main__':
        lineas = sys.stdin.readlines()
        i = 0
        intervaloini = 0
        intervalofin = 0
        for linea in lineas:
                linea = linea.strip()
                if not linea.isdigit():
                        continue
                numero=int(linea)
                i += 1
                if i == 1:
                        anterior = numero
                        intervaloini = numero
                        intervalofin = numero
                        continue
                if anterior+1 == numero:
                        intervalofin = numero
                else:
                        if intervaloini == intervalofin:
                                print intervaloini
                        else:
                                print "%d-%d" % (intervaloini, intervalofin)
                        intervaloini = numero
                        intervalofin = numero
                anterior = numero
        if i > 0:
                if intervaloini == intervalofin:
                        print intervaloini
                else:
                        print "%d-%d" % (intervaloini, intervalofin)

#fin