Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
In case you know only basics in Python solution in Uncategorized category for Nearest Value by Kolia951
def nearest_value(my_set: set, pointer: int) -> int:
# If value already in the set
if pointer in my_set:
result = pointer
else:
done = False
my_set.add(pointer)
my_list = sorted(list(my_set))
my_list_len = len(my_list)
position_of_pointer = my_list.index(pointer)
left_item = position_of_pointer - 1
right_item = position_of_pointer + 1
# If the value is the latest in the list
if my_list_len - 1 == position_of_pointer:
result = my_list[position_of_pointer - 1]
done = True
# If value is the first one in the list
elif position_of_pointer == 0:
result = my_list[1]
done = True
# If value in the body of the list. Checks left and right values.
else:
diff_between_left = pointer - my_list[position_of_pointer - 1]
diff_between_right = my_list[position_of_pointer + 1] - pointer
# When left value wins
if not done and diff_between_left <= diff_between_right:
result = my_list[position_of_pointer - 1]
#when right value wins
elif not done:
result = my_list[position_of_pointer + 1]
return result
if __name__ == '__main__':
print("Example:")
print(nearest_value({4, 7, 10, 11, 12, 17}, 9))
# These "asserts" are used for self-checking and not for an auto-testing
assert nearest_value({4, 7, 10, 11, 12, 17}, 9) == 10
assert nearest_value({4, 7, 10, 11, 12, 17}, 8) == 7
assert nearest_value({4, 8, 10, 11, 12, 17}, 9) == 8
assert nearest_value({4, 9, 10, 11, 12, 17}, 9) == 9
assert nearest_value({4, 7, 10, 11, 12, 17}, 0) == 4
assert nearest_value({4, 7, 10, 11, 12, 17}, 100) == 17
assert nearest_value({5, 10, 8, 12, 89, 100}, 7) == 8
assert nearest_value({-1, 2, 3}, 0) == -1
print("Coding complete? Click 'Check' to earn cool rewards!")
Jan. 21, 2021
Comments: