Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.98 KB | None | 0 0
  1. #Tugas Kecil Strategi Algoritma
  2. #Lucky Jonathan Chandra - 13517136
  3.  
  4. #Inisialisasi variabel penampung jawaban
  5. solutions = []
  6. solution_val = 0
  7.  
  8. def permute(params,results):
  9. #fungsi ini menggenerasi semua kemungkinan permutasi dari 4 bilangan masukan
  10.     temp = []
  11.     temp_res = []
  12.     for i in range(4):
  13.         for j in range(4):
  14.             if(j!=i):
  15.                 for k in range(4):
  16.                     if(k!=j and k!=i):
  17.                         for l in range(4):
  18.                             if(l!=k and l!=j and l!=i):
  19.                                 temp.append(params[i])
  20.                                 temp.append(params[j])
  21.                                 temp.append(params[k])
  22.                                 temp.append(params[l])
  23.                                 temp_res.append(temp)
  24.                                 temp = []
  25.     #Pencarian dan penghilangan hasil permutasi yang duplikat
  26.  
  27.     for res in temp_res:
  28.         if res not in results:
  29.             results.append(res)
  30.  
  31. def solve(var_list):
  32. #fungsi yang menggenerasi semua kemungkinan formasi kurung dan operator dalam urutan 4 angka yang ditentukan
  33.     global solution_val
  34.     op1 = '+'
  35.     op2 = '-'
  36.     op3 = '*'
  37.     op4 = '/'
  38.     for kurung in range(1,5): #setiap kemungkinan formasi kurung
  39.         for m in range(1,5): #setiap kemungkinan operator 1
  40.             for n in range(1,5): #setiap kemungkinan operator 2
  41.                 for o in range(1,5): #setiap kemungkinan operator 3
  42.                     temp_solution = "" #Dalam format a+b+c+d :
  43.                     if(kurung == 2 or kurung == 3):
  44.                         temp_solution = temp_solution+'('
  45.                     elif(kurung == 1):
  46.                         temp_solution = temp_solution+"(("
  47.                     temp_solution = temp_solution + str(var_list[0])+eval("op"+str(m)) #Dalam format a+b+c+d : a+
  48.                     if(kurung == 2):
  49.                         temp_solution = temp_solution+'('
  50.                     elif(kurung == 4):
  51.                         temp_solution = temp_solution+"(("
  52.                     temp_solution = temp_solution + str(var_list[1]) #Dalam format a+b+c+d : b
  53.                     if(kurung == 1 or kurung == 3):
  54.                         temp_solution = temp_solution+')'
  55.                     temp_solution = temp_solution + eval("op"+str(n)) #Dalam format a+b+c+d : +
  56.                     if(kurung == 3):
  57.                         temp_solution = temp_solution+'('
  58.                     temp_solution = temp_solution+str(var_list[2]) #Dalam format a+b+c+d : c
  59.                     if(kurung == 1 or kurung == 4):
  60.                         temp_solution = temp_solution+')'
  61.                     elif(kurung == 2):
  62.                         temp_solution = temp_solution+"))"
  63.                     temp_solution = temp_solution+eval("op"+str(o))+str(var_list[3]) #Dalam format a+b+c+d : +d
  64.                     if(kurung == 3 or kurung == 4):
  65.                         temp_solution = temp_solution+')'
  66.                     error = False
  67.                     try: eval(temp_solution)
  68.                     except ZeroDivisionError: error = True #mengantisipasi error pembagian dengan 0
  69.                     if(not error):
  70.                         if(eval(temp_solution) == 24):
  71.                             solutions.append(temp_solution)
  72.                             solution_val = solution_val + 1
  73.  
  74. #Pemrosesan input
  75. print("24 Solver")
  76. param = input("Masukan 4 angka yang dipisah dengan spasi : ")
  77. var = param.split(" ")
  78.  
  79. #Generasi semua kemungkinan urutan 4 angka
  80. vars_list = []
  81. permute(var,vars_list)
  82. for var_list in vars_list:
  83.     solve(var_list)
  84.  
  85. #Pencetakan jawaban
  86. if(solution_val != 0) :
  87.     print("Daftar Solusi : ")
  88.     for solution in solutions :
  89.         print(solution)
  90. print("Ditemukan "+str(solution_val)+" buah solusi")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement