[Python] Generalizzando: algoritmi di calcolo
Marco Beri
marcoberi a gmail.com
Lun 19 Ott 2009 20:45:25 CEST
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])
--
http://thinkcode.tv - Prossimamente su questi schermi
http://beri.it - Blog di una testina di vitello
http://stacktrace.it - Aperiodico di resistenza informatica
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20091019/af03b20a/attachment.htm
Maggiori informazioni sulla lista
Python