Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
51
Task/Sum-to-100/Python/sum-to-100-1.py
Normal file
51
Task/Sum-to-100/Python/sum-to-100-1.py
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
from itertools import product, islice
|
||||
|
||||
|
||||
def expr(p):
|
||||
return "{}1{}2{}3{}4{}5{}6{}7{}8{}9".format(*p)
|
||||
|
||||
|
||||
def gen_expr():
|
||||
op = ['+', '-', '']
|
||||
return [expr(p) for p in product(op, repeat=9) if p[0] != '+']
|
||||
|
||||
|
||||
def all_exprs():
|
||||
values = {}
|
||||
for expr in gen_expr():
|
||||
val = eval(expr)
|
||||
if val not in values:
|
||||
values[val] = 1
|
||||
else:
|
||||
values[val] += 1
|
||||
return values
|
||||
|
||||
|
||||
def sum_to(val):
|
||||
for s in filter(lambda x: x[0] == val, map(lambda x: (eval(x), x), gen_expr())):
|
||||
print(s)
|
||||
|
||||
|
||||
def max_solve():
|
||||
print("Sum {} has the maximum number of solutions: {}".
|
||||
format(*max(all_exprs().items(), key=lambda x: x[1])))
|
||||
|
||||
|
||||
def min_solve():
|
||||
values = all_exprs()
|
||||
for i in range(123456789):
|
||||
if i not in values:
|
||||
print("Lowest positive sum that can't be expressed: {}".format(i))
|
||||
return
|
||||
|
||||
|
||||
def highest_sums(n=10):
|
||||
sums = map(lambda x: x[0],
|
||||
islice(sorted(all_exprs().items(), key=lambda x: x[0], reverse=True), n))
|
||||
print("Highest Sums: {}".format(list(sums)))
|
||||
|
||||
|
||||
sum_to(100)
|
||||
max_solve()
|
||||
min_solve()
|
||||
highest_sums()
|
||||
29
Task/Sum-to-100/Python/sum-to-100-2.py
Normal file
29
Task/Sum-to-100/Python/sum-to-100-2.py
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
import itertools
|
||||
from collections import defaultdict, Counter
|
||||
|
||||
s = "123456789"
|
||||
h = defaultdict(list)
|
||||
for v in itertools.product(["+", "-", ""], repeat=9):
|
||||
if v[0] != "+":
|
||||
e = "".join("".join(u) for u in zip(v, s))
|
||||
h[eval(e)].append(e)
|
||||
|
||||
print("Solutions for 100")
|
||||
for e in h[100]:
|
||||
print(e)
|
||||
|
||||
c = Counter({k: len(v) for k, v in h.items() if k >= 0})
|
||||
|
||||
k, m = c.most_common(1)[0]
|
||||
print("Maximum number of solutions for %d (%d solutions)" % (k, m))
|
||||
|
||||
v = sorted(c.keys())
|
||||
|
||||
for i in range(v[-1]):
|
||||
if i not in c:
|
||||
print("Lowest impossible sum: %d" % i)
|
||||
break
|
||||
|
||||
print("Ten highest sums")
|
||||
for k in reversed(v[-10:]):
|
||||
print(k)
|
||||
Loading…
Add table
Add a link
Reference in a new issue