Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Microwave Ovens by tom-tom
class MicrowaveBase:
TIME_LIMIT = 90 * 60
def __init__(self):
super().__init__()
self.time = 0
def show_time(self):
return f"{self.time // 60:02}:{self.time % 60:02}"
@property
def time(self):
return self._time
@time.setter
def time(self, time):
if time > self.TIME_LIMIT:
self._time = self.TIME_LIMIT
elif time < 0:
self._time = 0
else:
self._time = time
class Microwave1(MicrowaveBase):
def show_time(self):
return "_" + super().show_time()[1:]
class Microwave2(MicrowaveBase):
def show_time(self):
return super().show_time()[:-1] + "_"
Microwave3 = MicrowaveBase
class RemoteControl:
def __init__(self, microwave):
super().__init__()
self.microwave = microwave
def set_time(self, time):
minutes, seconds = map(int, time.split(':'))
self.microwave.time = minutes * 60 + seconds
def _change(self, time):
return int(time[:-1]) * {'s': 1, 'm': 60}[time[-1]]
def add_time(self, time):
self.microwave.time += self._change(time)
def del_time(self, time):
self.microwave.time -= self._change(time)
def show_time(self):
return self.microwave.show_time()
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
microwave_1 = Microwave1()
microwave_2 = Microwave2()
microwave_3 = Microwave3()
remote_control_1 = RemoteControl(microwave_1)
remote_control_1.set_time("01:00")
remote_control_2 = RemoteControl(microwave_2)
remote_control_2.add_time("90s")
remote_control_3 = RemoteControl(microwave_3)
remote_control_3.del_time("300s")
remote_control_3.add_time("100s")
assert remote_control_1.show_time() == "_1:00"
assert remote_control_2.show_time() == "01:3_"
assert remote_control_3.show_time() == "01:40"
print("Coding complete? Let's try tests!")
April 25, 2019