Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Water Jars by Tinus_Trotyl
def checkio(first, second, goal):
if goal == first: return ['01']
if goal == second: return ['02']
volume1, volume2 = sorted((first, second))
inv = True if first > second else False
def method1():
measure = volume2 - volume1
seq = ['02', '21']
while measure != goal:
while measure >= volume1:
measure -= volume1
seq += ['10', '21']
if measure == goal: return seq
measure = volume2 + measure - volume1
seq += ['10', '21', '02', '21']
return seq
def method2():
measure = volume1
seq = ['01', '12']
while measure != goal:
while measure + volume1 <= volume2:
measure += volume1
seq += ['01', '12']
if measure == goal: return seq
measure = measure + volume1 - volume2
seq += ['01', '12']
if measure == goal: return seq
seq += ['20', '12']
return seq
trans = {'0': '0', '1': '2', '2': '1'}
return [''.join(trans[a] if inv else a for a in act) for act in min(method1(), method2(), key=len)]
June 26, 2019