[Python] Generalizzando: algoritmi di calcolo
Michele
michele a nectarine.it
Mar 20 Ott 2009 00:36:36 CEST
2009/10/19 Marco Beri <marcoberi a gmail.com>:
> Questa versione non inserisce l'ultimo intervallo spurio da 0 eventi attivi:
>
> s1ev = [(1723, 18550), (100000, 101000)]
> s2ev = [(9154, 9307), (9340, 10442), (87361, 98214)]
>
> starts = sorted(s[0] for s in s1ev + s2ev)
> ends = sorted(s[1] for s in s1ev + s2ev)
>
> actives = [[] for x in range(3)]
> actives[0] = [[0, 0]]
>
> actives_count = 0
> while ends:
> if starts and starts[0] < ends[0]:
> x = starts.pop(0)
> inc = 1
> else:
> x = ends.pop(0)
> inc = -1
> actives[actives_count][-1][1] = x
> actives_count += inc
> if ends:
> actives[actives_count].append([x, 0])
>
>
E' perfetto, grazie mille. Il codice mi è un po' oscuro, quindi ora mi
metto con l'interprete ad eseguire passo passo i tuoi statement e
vedere come costruisci il tutto.
Grazie!
Maggiori informazioni sulla lista
Python