Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
One-liner solution in Creative category for Create Intervals by tom-tom
from itertools import groupby
def create_intervals(data):
return [(r[0], r[-1]) for r in (list(zip(*g))[1] for _, g in groupby(enumerate(sorted(data)), lambda i: i[1] - i[0]))]
if __name__ == '__main__':
assert create_intervals({1, 2, 3, 4, 5, 7, 8, 12}) == [(1, 5), (7, 8), (12, 12)], "First"
assert create_intervals({1, 2, 3, 4, 5, 6, 7, 8}) == [(1, 8)], "Second"
assert create_intervals({127, 62, 30, 129, 33, 34, 60, 61,
32, 64, 65, 125, 126, 31, 128, 63}) == [(30, 34), (60, 65), (125, 129)], "Internally unordered"
assert create_intervals(set()) == [], "Empty"
print('Done!')
Aug. 1, 2017
Comments: