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)])