12345678910111213141516171819202122232425262728293031 |
- lines = []
- with open("15.input") as f:
- for line in f.readlines():
- lines.append(line.strip())
- numbers = [int(num) for num in lines[0].split(",")]
- def find_nth(numbers, end):
- numbers = list(numbers)
- last_spoken = {}
- for (i, num) in enumerate(numbers[:-1]):
- last_spoken[num] = i
- last = numbers[-1]
- numbers = numbers[0:-1]
- for i in range(len(numbers), end):
- if last in last_spoken:
- next = i - last_spoken[last]
- else:
- next = 0
- numbers.append(last)
- last_spoken[last] = i
- last = next
- return numbers[-1]
- print("Answer 1:", find_nth(numbers, 2020))
- print("Answer 2:", find_nth(numbers, 30000000))
|