2015 day 20.
This commit is contained in:
		
							
								
								
									
										28
									
								
								src/holt59/aoc/2015/day20.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/holt59/aoc/2015/day20.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| import itertools | ||||
| import sys | ||||
|  | ||||
| target = int(sys.stdin.read()) | ||||
|  | ||||
|  | ||||
| def presents(n: int, elf: int, max: int = target) -> int: | ||||
|     count = 0 | ||||
|     k = 1 | ||||
|     while k * k < n: | ||||
|         if n % k == 0: | ||||
|             if n // k <= max: | ||||
|                 count += elf * k | ||||
|             if k <= max: | ||||
|                 count += elf * (n // k) | ||||
|         k += 1 | ||||
|  | ||||
|     if k * k == n and k <= max: | ||||
|         count += elf * k | ||||
|  | ||||
|     return count | ||||
|  | ||||
|  | ||||
| answer_1 = next(n for n in itertools.count(1) if presents(n, 10) >= target) | ||||
| print(f"answer 1 is {answer_1}") | ||||
|  | ||||
| answer_2 = next(n for n in itertools.count(1) if presents(n, 11, 50) >= target) | ||||
| print(f"answer 2 is {answer_2}") | ||||
							
								
								
									
										1
									
								
								src/holt59/aoc/inputs/holt59/2015/day20.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/holt59/aoc/inputs/holt59/2015/day20.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| 34000000 | ||||
		Reference in New Issue
	
	Block a user