예제 #1
0
 def test_random(self):
     for n in range(2, 7):
         for max_value in [10, 20, 100, 1000]:
             for _ in range(10):
                 numbers = [randint(1, max_value) for _ in range(n)]
                 self.assertEqual(largest_number(numbers),
                                  largest_number_naive(numbers))
 def test_small(self):
     for numbers in [[1], [1, 2], [3548, 35, 17], [3528, 35, 17],
                     [3535, 35, 17], [3535, 35, 17], [35351, 35, 17],
                     [166, 16617], [16616, 166], [166, 1661666], [606, 60],
                     [166111, 166], [1, 12], [2, 12], [2, 21],
                     [2, 21, 23, 211, 213, 231, 232]]:
         self.assertEqual(largest_number(numbers),
                          largest_number_naive(numbers))
예제 #3
0
 def test_small(self):
     for numbers in [
         [1],
         [1, 2],
         [22, 32],
         [1, 12],
         [2, 12],
         [2, 21],
         [2, 21, 23, 211, 213, 231, 232]
     ]:
         self.assertEqual(largest_number(numbers), largest_number_naive(numbers))
예제 #4
0
from maximum_salary import largest_number


def reference(numbers):
    numbers = list(map(str, numbers))

    for _ in numbers:
        for i in range(len(numbers) - 1):
            if numbers[i] + numbers[i + 1] < numbers[i + 1] + numbers[i]:
                t = numbers[i]
                numbers[i] = numbers[i + 1]
                numbers[i + 1] = t

    return int("".join(numbers))


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

    all_tests_passed = True
    for numbers in [[2, 21, 23, 211, 213, 231, 232],
                    [56, 5, 6, 556, 566, 666, 665, 656]]:
        if reference(numbers) != largest_number(numbers):
            all_tests_passed = False
            failed("Wrong answer for n={}".format(numbers))
            break

    if all_tests_passed:
        passed()