Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2019
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.42 KB | None | 0 0
  1. import time
  2. start_time = time.time()
  3.  
  4.  
  5. #FUNGSI PERMUTASI
  6. def permute(elements):
  7.     if len(elements) <=1:
  8.         yield elements
  9.     else:
  10.         for perm in permute(elements[1:]):
  11.             for i in range(len(elements)):
  12.                 yield perm[:i] + elements[0:1] + perm[i:]
  13.  
  14.  
  15. #PROGRAM UTAMA
  16. print("Masukkan 4 digit yang diinginkan: \n")
  17. x = [int(x) for x in input().split()]
  18. number = list(permute(x))
  19.  
  20. count = 0
  21.  
  22. l = ['+', '-', '*', '/']
  23. i = 0
  24. for i in range(23):
  25.     for x in (l):
  26.         for y in (l):
  27.             for z in (l):
  28.  
  29.                 #testcase 1 (a.b).(c.d)
  30.                 test = ('(' + str(number[i][0]) + x + str(number[i][1]) + ')' + y + '(' + str(number[i][2]) + z + str(number[i][3]) + ')')
  31.                 if ((number[i][1] == 0 and x == '/') or (number[i][3] == 0 and z == '/') or (eval('(' + str(number[i][2]) + z + str(number[i][3]) + ')') == 0 and y == '/')):
  32.                     break
  33.                 else:
  34.                     a = eval(test)
  35.                     if a == 24:
  36.                         count += 1
  37.                         print(test)
  38.  
  39.                 #testcase 2 (a.(b.c)).d
  40.                 test = ('(' + str(number[i][0]) + x + '(' + str(number[i][1]) + y + str(number[i][2]) + ')' + ')' + z + str(number[i][3]))
  41.                 if (number[i][2] == 0 and y == '/') or (eval('(' + str(number[i][1]) + y + str(number[i][2]) + ')') == 0 and x == '/') or (number[i][3] == 0 and z == '/'):
  42.                     break
  43.                 else:
  44.                     a = eval(test)
  45.                     if a == 24:
  46.                         count += 1
  47.                         print(test)
  48.  
  49.                 #testcase 3 ((a.b).c).d
  50.                 test = ('(' + '(' + str(number[i][0]) + x + str(number[i][1]) + ')' + y + str(number[i][2]) + ')' + z + str(number[i][3]))
  51.                 if ((number[i][1] == 0 and x == '/') or (number[i][2] == 0 and y == '/') or (number[i][3] == 0 and z == '/')):
  52.                     break
  53.                 else:
  54.                     a = eval(test)
  55.                     if a == 24:
  56.                         count += 1
  57.                         print(test)        
  58.  
  59.                 #testcase 4 a.(b.(c.d))
  60.                 test = (str(number[i][0]) + x + '(' + str(number[i][1]) + y + '(' + str(number[i][2]) + z + str(number[i][3]) + ')' + ')')
  61.                 if ((eval('(' + str(number[i][2]) + z + str(number[i][3]) + ')') == 0 and y == '/') or (eval('(' + str(number[i][1]) + y + '(' + str(number[i][2]) + z + str(number[i][3]) + ')' + ')') == 0 and x == '/') or (number[i][3] == 0 and z == '/')):
  62.                     break
  63.                 else:
  64.                     a = eval(test)
  65.                     if a == 24:
  66.                         count += 1
  67.                         print(test)
  68.  
  69.                 #testcase 5 a.((b.c).d)
  70.                 test = (str(number[i][0]) + x + '(' + '(' + str(number[i][1]) + y + str(number[i][2]) + ')' + z + str(number[i][3]) + ')')
  71.                 if ((number[i][2] == 0 and y == '/') or (eval('(' + '(' + str(number[i][1]) + y + str(number[i][2]) + ')' + z + str(number[i][3]) + ')') == 0 and x == '/') or (number[i][3] == 0 and z == '/')):
  72.                     break
  73.                 else:
  74.                     a = eval(test)
  75.                     if a == 24:
  76.                         count += 1
  77.                         print(test)
  78.  
  79. print("Ditemukan " + str(count) + " solusi")
  80.  
  81. print("runtime: %s seconds" % (time.time() - start_time))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement