Решение CCC 2016 J4 Задача программирования времени прибытия

#python

Вопрос:

Я смотрю на решение CCC J4.

Это проблема:

Фиона каждый день ездит на работу. Если нет движения в час пик, ее время в пути составляет 2 часа. Однако здесь часто бывает движение в час пик. В частности, движение в час пик происходит с 07:00 (7 утра) до 10:00 (10 утра) утром и с 15:00 (3 часа дня) до 19:00 (7 вечера) днем. Во время движения в час пик ее скорость снижается вдвое. Она уходит либо в назначенный час (в XX:00), либо через 20 минут после назначенного часа (в XX:20), либо через 40 минут после назначенного часа (в XX:40). Учитывая время отъезда Фионы, в какое время она приходит на работу?

Входная спецификация

Ввод будет состоять из одной строки, которая содержит выражение вида HH:ММ, где HH-один из 24 часов начала (00, 01, . . ., 23) и ММ-это одно из трех возможных минут отправления (00, 20, 40).

Выходная спецификация

Выведите время прибытия Фионы в виде ЧЧ:мм.

Решение, которое я нашел, напиши так:

 slow1s = 7*60
slow1e = 10*60
slow2s = 15*60
slow2e = 19*60

sinput = input().split(":")
startt = int(sinput[0])*60   int(sinput[1])

D = 240
while D > 0:
    if startt > slow1s and startt < slow1e:
        D -= 1
    elif startt > slow2s and startt < slow2e:
        D -= 1
    else:
        D -= 2
    startt  = 1

if startt  == 9:
    startt  = 1

s = ""
h = startt//60$
m = startt`

if h < 10:
    s = "0" str(h) ":"
else:
    s = str(h)   ":"

if m < 10:
    s  = "0" str(m)
else:
    s  = str(m)

print(s)
 

Однако теперь я знаю, почему он/она написал этот код.

 if startt  == 9:
    startt  = 1 
 

Я чувствую, что это бесполезно, но это работает, если время отправления 14:20, так как, если этот код удален, вывод будет 17:39 вместо 17: 40.

Комментарии:

1. Фактическая ошибка в (не очень хорошем) решении находится на if startt > slow1s and startt < slow1e: . Первый оператор строгого неравенства должен также допускать равенство. То же самое elif и ниже. «Бесполезный» код исправляет эту ошибку.