You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.1 KiB
86 lines
2.1 KiB
from funcs import *
|
|
from termcolor import colored
|
|
ops = (
|
|
'+',
|
|
'-',
|
|
'*',
|
|
'/',
|
|
)
|
|
|
|
par = (
|
|
'{n[0]}{o[0]}{n[1]}{o[1]}{n[2]}{o[2]}{n[3]}',
|
|
'({n[0]}{o[0]}{n[1]}){o[1]}({n[2]}{o[2]}{n[3]})',
|
|
'({n[0]}{o[0]}{n[1]}{o[1]}{n[2]}){o[2]}{n[3]}',
|
|
'({n[0]}{o[0]}{n[1]}){o[1]}{n[2]}{o[2]}{n[3]}',
|
|
)
|
|
colors = [
|
|
'red',
|
|
'green',
|
|
'yellow',
|
|
'blue',
|
|
'magenta',
|
|
'cyan'
|
|
]
|
|
var = ('a','b','c','d')
|
|
ps = perms(4)
|
|
|
|
def find(numbs,fast = False):
|
|
|
|
answers = [[],[]]
|
|
|
|
t = True
|
|
|
|
for perm in ps:
|
|
perm = list(
|
|
map(
|
|
lambda x:x-1,perm
|
|
)
|
|
)
|
|
org = perm
|
|
perm = choose(numbs,perm)
|
|
|
|
for o in range(4**3):
|
|
o = zp(con_base(o,4),3)
|
|
o = choose(ops,o)
|
|
|
|
for p in par:
|
|
g = p.format(**{'n':perm,'o':o})
|
|
|
|
try:
|
|
if round(eval(g),2) == 10:
|
|
if fast:
|
|
return [g]
|
|
else:
|
|
var_subbed = choose(var,org)
|
|
org = p.format(**{
|
|
'n':var_subbed,
|
|
'o':o
|
|
})
|
|
|
|
d = simplify(org)
|
|
if not (d in answers[0]):
|
|
answers[0].append(d)
|
|
answers[1].append(g)
|
|
except:
|
|
pass
|
|
return tuple(set(answers[1]))
|
|
|
|
Strng0 = 'Fancy colors? (y or n):'
|
|
Strng1 = 'One or all solutions (one or all):'
|
|
|
|
fancy_colors = input(Strng0) == 'y'
|
|
fast = input(Strng1) == 'all'
|
|
print(
|
|
find(
|
|
list(range(1,5)),False
|
|
)
|
|
)
|
|
while True:
|
|
if fancy_colors:
|
|
random.shuffle(colors)
|
|
for col in colors:
|
|
for ans in find(getInput(input('Numbers:')),fast):
|
|
print(colored(ans,col))
|
|
else:
|
|
for ans in find(getInput(input('Numbers:')),fast):
|
|
print(ans)
|