He hecho el primero, para que después desu no diga
spoilerfrom bisect import bisect_left
def read_input(path='input.txt'):
file = open(path, "r")
input = [int(number) for number in file]
input.sort()
return input
def part1():
input = read_input()
for x in input:
y = abs(x - 2020)
y_index = bisect_left(input, y)
if input[y_index] == y:
print(f"Numbers found!: {x}*{y} = {x * y}")
return
def part2():
input = read_input()
for x in input:
y_plus_z = abs(x - 2020)
for y in input:
z = abs(y_plus_z - y)
z_index = bisect_left(input, z)
if input[z_index] == z:
print(f"Numbers found!: {x}*{y}*{z} = {x * y * z}")
return
La parte 2 he estado dandole un rato vueltas a ver como si había forma de hacerlo diferente, pero bueno, no doy pa más xD.
Tiempo de cómputo:
part1 takes 0.05482400000346388 ms
part2 takes 0.0441369999998642 ms
Esta tarde si eso hago el segundo, que hoy ha salido el solecito