Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Tutti brutti solution in Clear category for Reverse Engineer by veky
from itertools import count, product
from fractions import Fraction as F
def pairs(total):
for i in range(total): yield i, total + ~i
def omega(f, start=0):
for i in count(start): yield from f(i)
gen_pairs = omega(pairs)
def expr(complexity):
if not complexity: yield from 'xy'
for parts in pairs(complexity):
for a, b in product(*map(expr, parts)):
for op in "+-*/": yield '(' + a + op + b + ')'
def xy_eval(e, x, y):
try: r = eval(e, dict(x=F(x), y=F(y)))
except ZeroDivisionError as zd: return type(zd).__name__
else: return list(r.as_integer_ratio())
def checkio(steps):
global gen_expr
if not steps: gen_expr = omega(expr)
while True:
e = next(gen_expr)
if all(xy_eval(e,x,y)==r for x,y,r in steps): return e,*next(gen_pairs)
April 12, 2021