Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Broken Clock by martin_b
import datetime
def broken_clock(starting_time, wrong_time, error_description):
s = datetime.datetime.strptime(starting_time, '%H:%M:%S')
w = datetime.datetime.strptime(wrong_time, '%H:%M:%S')
d = w - s
t1, u1, _, t2, u2 = error_description.split()
m = {'h': 3600, 'm': 60, 's': 1}
dt = int(t1) * m[u1[0]]
p = int(t2) * m[u2[0]]
t = s + datetime.timedelta(0, int(d.seconds * p / (p + dt)))
return str(t.time())
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == "__main__":
assert broken_clock('00:00:00', '00:00:15', '+5 seconds at 10 seconds') == '00:00:10', "First example"
assert broken_clock('06:10:00', '06:10:15', '-5 seconds at 10 seconds') == '06:10:30', 'Second example'
assert broken_clock('13:00:00', '14:01:00', '+1 second at 1 minute') == '14:00:00', 'Third example'
assert broken_clock('01:05:05', '04:05:05', '-1 hour at 2 hours') == '07:05:05', 'Fourth example'
assert broken_clock('00:00:00', '00:00:30', '+2 seconds at 6 seconds') == '00:00:22', 'Fifth example'
Jan. 27, 2016