| Bytes | Lang | Time | Link |
|---|---|---|---|
| 8812 | Python 3 | 250409T190142Z | CursorCo |
Python 3, SCORE: 8812
from itertools import *
from functools import *
def power_set(lis):
lis = sorted(lis)
return list(chain.from_iterable(combinations(lis, r) for r in range(len(lis)+1)))
def get_families(lis, closed=False):
ret_val = []
for family in power_set(power_set(lis)):
if not family or not any(family):
continue
if closed:
for p1, p2 in combinations(family, 2):
if tuple(sorted(set(p1+p2))) not in family:
break
else:
ret_val.append(family)
else:
ret_val.append(family)
return ret_val
x_k = [3,10,45,92]
idk = lambda i: x_k[i]
op1 = lambda x,y: x+y
op2 = lambda x,y: x*y
df1 = 0
df2 = 1
final_score = 0
for f in range(4):
total = 0
families = get_families(range(f+1), False)
for family in families:
for k in range(f+1):
lhs = df1
rhs = df1
for A in family:
if k in A:
lhs = op1(lhs, reduce(op2, map(idk, A), df2))
else:
rhs = op1(rhs, reduce(op2, map(idk, A), x_k[k]))
if lhs >= rhs:
total += 1
break
# print(total, "/", len(families))
print(f"c{f+1}: {total}")
final_score += len(families) - total
print(f"SCORE: {final_score}")
Operation 1 is sum, operation 2 is product, \$x_k=[3,10,45,92]\$. This results in counts of 2, 12, 213, 56765.