Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for Mathematically Lucky Tickets by Moff
from itertools import product
class Node(object):
def __init__(self, left=None, right=None):
self.left = left
self.right = right
def pattern(self):
if self.left is None and self.right is None:
return '{}'
else:
return '({}{{{{}}}}{})'.format(self.left.pattern(), self.right.pattern())
def gen_trees(size):
if size == 1:
return [Node()]
result = []
for i in range(1, size):
for left in gen_trees(i):
for right in gen_trees(size - i):
result.append(Node(left, right))
return result
def checkio(i):
patterns = [n.pattern().format(*i) for n in gen_trees(6)]
operations = ['+', '-', '*', '/', '']
for p in patterns:
for op in product(operations, repeat=5):
expr = p.format(*op)
try:
if eval(expr) == 100:
return False
except (ZeroDivisionError, TypeError, SyntaxError):
pass
return True
Aug. 27, 2015