web3-starter-py/emotive.io/1.py
2022-03-23 18:25:34 +04:00

39 lines
1.1 KiB
Python

#!/usr/bin/env python3
# Examples from the exercise.
id_list1 = [122, 144, 122, 144, 182]
id_list1_return = [122, 123, 144, 145, 182]
id_list2 = [13458, 13890, 13890, 144568, 144568]
id_list2_return = [13458, 13890, 13891, 144568, 144569]
# Additional examples,
id_list3 = []
id_list4 = [0, 0, 0, 0, 0]
id_list4_return = [0, 1, 2, 3, 4]
def deduplicate_copilots_ids(id_list):
''' Take an array of unsorted integer IDs and use sequential
addition to deduplicate. Returns a sorted list of these IDs.'''
aux_dict = {}
for k in id_list:
if k in aux_dict.keys():
aux_dict[k] = aux_dict[k] + 1
else:
aux_dict[k] = 1
new_list = []
for key, value in aux_dict.items():
for i in range(0, value):
new_list.append(key + i)
# Note: sorted() used Timsort algorithm, which is nLog(n)
return sorted(new_list)
# Tests should pass.
assert(deduplicate_copilots_ids(id_list1) == id_list1_return)
assert(deduplicate_copilots_ids(id_list2) == id_list2_return)
assert(deduplicate_copilots_ids(id_list3) == [])
assert(deduplicate_copilots_ids(id_list4) == id_list4_return)