aboutsummaryrefslogtreecommitdiff
path: root/challenge-206/lubos-kolouch/python/ch-1.py
blob: ac6bd1129b644cb1979c44a5c12f5a5672c65d42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import unittest


def shortest_time_in_minutes(*times):
    min_diff = 24 * 60  # maximum possible difference in minutes
    for i in range(len(times) - 1):
        for j in range(i + 1, len(times)):
            h1, m1 = map(int, times[i].split(':'))
            h2, m2 = map(int, times[j].split(':'))
            diff = abs((h1 - h2) * 60 + (m1 - m2))
            diff = 24 * 60 - diff if diff > 12 * 60 else diff  # account for circular time
            min_diff = min(diff, min_diff)
    return min_diff


class TestShortestTimeInMinutes(unittest.TestCase):

    def test_example1(self):
        self.assertEqual(shortest_time_in_minutes("00:00", "23:55", "20:00"),
                         5)

    def test_example2(self):
        self.assertEqual(shortest_time_in_minutes("01:01", "00:50", "00:57"),
                         4)

    def test_example3(self):
        self.assertEqual(
            shortest_time_in_minutes("10:10", "09:30", "09:00", "09:55"), 15)


if __name__ == '__main__':
    unittest.main()