Facebook
From kapitansaluyot, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 314
  1. with open("data13.txt") as f:
  2.     buses = [(i,int(x))  for i,x in enumerate(f.read().split("\n")[1].split(",")) if x != "x"]
  3.  
  4. num = buses[0][1]
  5.  
  6. base = 0
  7. mult = 1
  8. omega_i = 1
  9.  
  10. while True:
  11.  
  12.     i = 0
  13.  
  14.     base_found = False
  15.     mult_found = False
  16.  
  17.     test = 0
  18.  
  19.     print("CURR:", buses[1:omega_i+2], base, mult)
  20.  
  21.     while True:
  22.  
  23.         temp_base = base
  24.         temp_mult = mult
  25.  
  26.         factor = temp_base + temp_mult * i
  27.         curr = num * factor
  28.  
  29.         # print(i, curr, factor)
  30.  
  31.         flag = True
  32.         for kth,bus in buses[1:omega_i+2]:
  33.             if (curr - bus + kth) % bus != 0 or curr - bus + kth < 0:
  34.                 flag = False
  35.                 break
  36.  
  37.  
  38.         if flag:
  39.             if not base_found:
  40.                 print("BASE FOUND", factor)
  41.                 base_found = True
  42.                 base = factor
  43.                 test = base
  44.             else:
  45.                 print("MULT FOUND", base, factor - test)
  46.                 mult_found = True
  47.                 mult = factor - test
  48.  
  49.         if mult_found:
  50.            
  51.             break
  52.  
  53.         i += 1
  54.  
  55.     print(base * buses[0][1], mult, base)
  56.     print("----------------------")
  57.  
  58.     if omega_i == len(buses)-1:
  59.         break
  60.  
  61.     omega_i += 1
  62.  
  63. print("ANS:", base * num, "BASE:", base, "MULT:",mult)