Guest User

base16_improved

a guest
May 7th, 2016
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.38 KB | None | 0 0
  1. from itertools import permutations
  2.  
  3. def tuple_to_base(tple, base):
  4.     size = len(tple) - 1
  5.     return sum(val*base**(size - i) for i, val in enumerate(tple))
  6.  
  7. def targets(num1, num2):
  8.     unique_digits = num1 + num2
  9.     base = 2*(num1 + num2)
  10.     size = range(base)
  11.     dic = dict()
  12.     solutions = set()
  13.     perms1 = permutations(size, num1)
  14.     perms2 = list(permutations(size, num2))
  15.     q = 0
  16.     for p in perms1:
  17.         num_p = tuple_to_base(p, base)
  18.         str_p = str(num_p)
  19.         for q in perms2:
  20.             num_q = tuple_to_base(q, base)
  21.             str_q = str(num_q)
  22.             if len(set(str_p + str_q)) == unique_digits:
  23.                 total = num_p*num_q
  24.                 try:
  25.                     dic[total]
  26.                     temp_solution = set(dic[total][0] + dic[total][1] + p + q)
  27.                     if len(temp_solution) == base:
  28.                         num_3 = tuple_to_base(dic[total][0], base)
  29.                         num_4 = tuple_to_base(dic[total][1], base)
  30.                         print ( max(num_q, num_p) , min(num_q, num_p) , max(num_3, num_4) , min(num_3, num_4) )
  31.                         solutions.add( ( max(num_q, num_p) , min(num_q, num_p) , max(num_3, num_4) , min(num_3, num_4) )  )
  32.                 except:
  33.                     dic[total] = (p, q)
  34.     return list(solutions)
  35.  
  36. if __name__ == '__main__':
  37.  
  38.     print targets(3, 2)
Advertisement
Add Comment
Please, Sign In to add comment