Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- start_time = time.time()
- #FUNGSI PERMUTASI
- def permute(elements):
- if len(elements) <=1:
- yield elements
- else:
- for perm in permute(elements[1:]):
- for i in range(len(elements)):
- yield perm[:i] + elements[0:1] + perm[i:]
- #PROGRAM UTAMA
- print("Masukkan 4 digit yang diinginkan: \n")
- x = [int(x) for x in input().split()]
- number = list(permute(x))
- count = 0
- l = ['+', '-', '*', '/']
- i = 0
- for i in range(23):
- for x in (l):
- for y in (l):
- for z in (l):
- #testcase 1 (a.b).(c.d)
- test = ('(' + str(number[i][0]) + x + str(number[i][1]) + ')' + y + '(' + str(number[i][2]) + z + str(number[i][3]) + ')')
- 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 == '/')):
- break
- else:
- a = eval(test)
- if a == 24:
- count += 1
- print(test)
- #testcase 2 (a.(b.c)).d
- test = ('(' + str(number[i][0]) + x + '(' + str(number[i][1]) + y + str(number[i][2]) + ')' + ')' + z + str(number[i][3]))
- 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 == '/'):
- break
- else:
- a = eval(test)
- if a == 24:
- count += 1
- print(test)
- #testcase 3 ((a.b).c).d
- test = ('(' + '(' + str(number[i][0]) + x + str(number[i][1]) + ')' + y + str(number[i][2]) + ')' + z + str(number[i][3]))
- if ((number[i][1] == 0 and x == '/') or (number[i][2] == 0 and y == '/') or (number[i][3] == 0 and z == '/')):
- break
- else:
- a = eval(test)
- if a == 24:
- count += 1
- print(test)
- #testcase 4 a.(b.(c.d))
- test = (str(number[i][0]) + x + '(' + str(number[i][1]) + y + '(' + str(number[i][2]) + z + str(number[i][3]) + ')' + ')')
- 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 == '/')):
- break
- else:
- a = eval(test)
- if a == 24:
- count += 1
- print(test)
- #testcase 5 a.((b.c).d)
- test = (str(number[i][0]) + x + '(' + '(' + str(number[i][1]) + y + str(number[i][2]) + ')' + z + str(number[i][3]) + ')')
- 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 == '/')):
- break
- else:
- a = eval(test)
- if a == 24:
- count += 1
- print(test)
- print("Ditemukan " + str(count) + " solusi")
- print("runtime: %s seconds" % (time.time() - start_time))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement