35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
def create_intervals(data):
|
|
"""
|
|
Create a list of intervals out of set of ints.
|
|
"""
|
|
results = []
|
|
data = sorted(data)
|
|
start = None
|
|
current_number = None
|
|
for number in data:
|
|
if start is None:
|
|
start = number
|
|
current_number = start
|
|
continue
|
|
if number != start and number != (current_number + 1):
|
|
results.append((start, current_number))
|
|
start = number
|
|
current_number = number
|
|
if start is not None:
|
|
results.append((start, current_number))
|
|
return iter(results)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# These "asserts" using only for self-checking and not necessary for auto-testing
|
|
res = create_intervals(iter(sorted(list({1, 2, 3, 4, 5, 7, 8, 12}))))
|
|
assert hasattr(res, '__iter__'), "your function should return the iterator object"
|
|
assert hasattr(res, '__next__'), "your function should return the iterator object"
|
|
|
|
assert list(create_intervals(iter(sorted(list({1, 2, 3, 4, 5, 7, 8, 12}))))) == [
|
|
(1, 5), (7, 8), (12, 12)], "First"
|
|
assert list(create_intervals(iter(sorted(list({1, 2, 3, 6, 7, 8, 4, 5}))))) == [
|
|
(1, 8)], "Second"
|
|
assert list(create_intervals(iter([]))) == [], "Empty"
|
|
print('Almost done! The only thing left to do is to Check it!')
|