def main(): """Perform gradient descent using user-provided parameters. This asks the user to provide a learning rate, an initial starting value, and a maximum step count to avoid infinite iteration. """ learning_rate = get_float_input('Input a learning rate, a=') initial_x = get_float_input('Input an initial value, x0=') step_count = get_int_input('Input the number of steps:') print('Now descending...') descend(initial_x=initial_x, step_count=step_count, step_size=learning_rate, callback=print_update)
def parse_input(file_name): return common.get_int_input(file_name)
def solve_2(numbers, target_sum): half = target_sum / 2 entry1 = next( (n for n in numbers if (target_sum - n) in numbers and n != half), None) entry2 = (target_sum - entry1) if entry1 is not None else None return entry1, entry2 def solve_3(numbers, target_sum): all_numbers = numbers numbers = numbers.copy() for entry1 in all_numbers: numbers.remove(entry1) entry2, entry3 = solve_2(numbers, target_sum - entry1) if None not in (entry2, entry3): return entry1, entry2, entry3 numbers.add(entry1) return None, None, None file_name = '01.txt' target_sum = 2020 number_list = common.get_int_input(file_name) numbers = set(number_list) if len(number_list) > len(numbers): raise Exception("Current implementation can not handle duplicates") entry1, entry2, entry3 = solve_3(numbers, target_sum) product = entry1 * entry2 * entry3 print(product)