Advent of code 2015 solutions https://adventofcode.com/2015/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

20.py 420B

1234567891011
  1. from itertools import chain
  2. target = 34000000
  3. flatten = chain.from_iterable
  4. factors = lambda n: set(flatten((i, n//i) for i in range(1, int(n**0.5)+1) if n % i == 0))
  5. presents1 = lambda n: 10 * sum(x for x in factors(n))
  6. presents2 = lambda n: sum(11 * x for x in factors(n) if n // x <= 50)
  7. print(next(i for i in range(target) if presents1(i) > target))
  8. print(next(i for i in range(target) if presents2(i) > target))