adventofcode

https://adventofcode.com/
Log | Files | Refs

puzzle15.py (687B)


      1 with open('files/puzzle15.txt') as f:
      2     seeds = [int(line.split(" ")[4]) for line in f.readlines()]
      3 
      4 matches = 0
      5 a, b = seeds[0], seeds[1]
      6 
      7 for i in range(40000000):
      8     a = (a * 16807) % 2147483647
      9     b = (b * 48271) % 2147483647
     10     if a & 0xffff == b & 0xffff:
     11         matches += 1
     12 
     13 print matches
     14 
     15 a, b = seeds[0], seeds[1]
     16 a_candidates, b_candidates = [], []
     17 
     18 while len(a_candidates) < 5000000 or len(b_candidates) < 5000000:
     19     a = (a * 16807) % 2147483647
     20     b = (b * 48271) % 2147483647
     21     if a % 4 == 0:
     22         a_candidates.append(a)
     23     if b % 8 == 0:
     24         b_candidates.append(b)
     25 
     26 print sum([int(a & 0xffff == b & 0xffff) for a, b in zip(a_candidates, b_candidates)])