def test(self):
     for (d, m, stops, answer) in [(950, 400, [200, 375, 550, 750], 2),
                                   (10, 3, [1, 2, 5, 9], -1),
                                   (200, 250, [100, 150], 0),
                                   (950, 400, [200, 650, 750, 850], -1)]:
         self.assertEqual(compute_min_number_of_refills(d, m, stops),
                          answer)
Пример #2
0
def reference(distance, tank, stops):
    stops = [0] + stops + [distance]
    num_refills, cur_refill = 0, 0
    while cur_refill <= len(stops) - 2:
        last_refill = cur_refill
        while cur_refill <= len(stops) - 2 and stops[
                cur_refill + 1] - stops[last_refill] <= tank:
            cur_refill += 1
        if cur_refill == last_refill:
            return -1
        if cur_refill <= len(stops) - 2:
            num_refills += 1

    return num_refills


if __name__ == '__main__':
    run_common_tests()
    check_tests_pass("car_fueling_unit_tests.py")

    all_tests_passed = True
    for (d, m, stops) in [(500, 200, [100, 200, 300, 400])]:
        if reference(d, m, stops) != compute_min_number_of_refills(
                d, m, stops):
            all_tests_passed = False
            failed("Wrong answer for d={}, m={}, stops={}".format(d, m, stops))
            break

    if all_tests_passed:
        passed()