예제 #1
0
def test():
    solution = Solution()
    for case, ans in [
        ([
            "bbbbbabbbbabaababaaaabbababbaaabbabbaaabaaaaababbbababbbbbabbbbababbabaabababbbaabababababbbaaababaa",
            "babaaaabbababbbabbbbaabaabbaabbbbaabaaabaababaaaabaaabbaaabaaaabaabaabbbbbbbbbbbabaaabbababbabbabaab",
            "babbbabbbaaabbababbbbababaabbabaabaaabbbbabbbaaabbbaaaaabbbbaabbaaabababbaaaaaabababbababaababbababbbababbbbaaaabaabbabbaaaaabbabbaaaabbbaabaaabaababaababbaaabbbbbabbbbaabbabaabbbbabaaabbababbabbabbab"
        ], False),
        (['ef', 'gh', 'ehgf'], False),
        (['', '', ''], True),
        (['', 'a', 'a'], True),
        (['a', '', 'a'], True),
        (['a', '', 'b'], False),
        (['xyz', '', 'xyz'], True),
        (['xyz', 'xyz', 'xyz' * 2], True),
        (['xyz', 'xyz', 'xxyzyz'], True),
        (['xyaaaaaz', 'xaaaaayz', 'xxyaaaaazaaaaayz'], True),
        (['aabcc', 'dbbca', 'aadbbcbcac'], True),
        (['aabcc', 'dbbca', 'aadbbbaccc'], False),
        (['a' * 100000, 'a' * 100000, 'a' * 200000], True),
        (['a' * 100000, 'b' * 100000, 'a' * 100000 + 'b' * 100000], True),
        ([
            'a' * 100000, 'b' * 100000,
            ''.join(random.sample('a' * 100000 + 'b' * 100000, 200000))
        ], True),
    ]:
        res = solution.isInterleave(*case)
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #2
0
def test():
    for case, ans in [
    ]:
        res = function(*case)
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #3
0
def test():
    words = ['apple']
    obj = WordFilter(words)
    for case, ans in [
        (('a', 'e'), 0),
        (('b', ''), -1),
    ]:
        res = obj.f(*case)
        assert res == ans, fail_string(res=res, ans=ans)
예제 #4
0
def test_long():
    words = ['apple', 'ape', 'ae', '']
    obj = WordFilter(words)
    for case, ans in [
        (('a', 'e'), 2),
        (('', ''), 3),
    ]:
        res = obj.f(*case)
        assert res == ans, fail_string(res=res, ans=ans)
예제 #5
0
def test():
    solution = Solution()
    for case in [100, 1000, 10000]:
        print case
        res = solution.countPrimes(case)
        ans = len(filter(is_a_prime, range(case)))
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #6
0
def test():
    for case in range(1, 1000):
        for bad in range(1, case):
            solution = Solution(bad)
            ans = bad
            res = solution.firstBadVersion(case)
            try:
                assert res == ans
            except AssertionError as e:
                status = fail_string(res=res, ans=ans, case=case)
                sys.exit(status)
예제 #7
0
def test():
    for case, ans in [
        ([[3, 6, 1, 0]], 1),
        ([[1, 2, 3, 4]], -1),
        ([[0, 0, 3, 2]], -1),
    ]:
        res = twice(*case)
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #8
0
def test_leet():
    null = 'null'
    for input2, output in [[[[["pop"]], ["", ""], ["", "p"], ["", "op"],
                             ["", "pop"], ["p", ""], ["p", "p"], ["p", "op"],
                             ["p", "pop"], ["po", ""], ["po", "p"],
                             ["po", "op"], ["po", "pop"], ["pop", ""],
                             ["pop", "p"], ["pop", "op"], ["pop", "pop"],
                             ["", ""], ["", "p"], ["", "gp"], ["", "pgp"],
                             ["p", ""], ["p", "p"], ["p", "gp"], ["p", "pgp"],
                             ["pg", ""], ["pg", "p"], ["pg", "gp"],
                             ["pg", "pgp"], ["pgp", ""], ["pgp", "p"],
                             ["pgp", "gp"], ["pgp", "pgp"]],
                            [
                                null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                0, 0, 0, 0, -1, -1, 0, 0, -1, -1, -1, -1, -1,
                                -1, -1, -1, -1, -1
                            ]],
                           [[[[
                               "abbbababbb", "baaabbabbb", "abababbaaa",
                               "abbbbbbbba", "bbbaabbbaa", "ababbaabaa",
                               "baaaaabbbb", "babbabbabb", "ababaababb",
                               "bbabbababa"
                           ]], ["", "abaa"], ["babbab", ""], ["ab", "baaa"],
                             ["baaabba", "b"], ["abab", "abbaabaa"],
                             ["", "aa"], ["", "bba"], ["", "baaaaabbbb"],
                             ["ba", "aabbbb"], ["baaa", "aabbabbb"]],
                            [null, 5, 7, 2, 1, 5, 5, 3, 6, 6, 1]]]:

        obj = WordFilter(input2[0][0])
        prefix_suffix = input2[1:]
        ans_array = output[1:]

        for case, ans in zip(prefix_suffix, ans_array):
            res = obj.f(*case)
            try:
                assert res == ans
            except AssertionError as e:
                print case
                print fail_string(res=res, ans=ans)
                sys.exit(0)
예제 #9
0
def test():
    for case, ans in [
        ([["0201","0101","0102","1212","2002"], "0202"], 6),
        ([["8888"], "0009"], 1),
        ([["8887","8889","8878","8898","8788","8988","7888","9888"], "8888"], -1),
        ([["1002","1220","0122","0112","0121"], "1200"], 3),
    ]:
        res = turn(*case)
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #10
0
def test1():
    solution = Solution()
    for case, ans in [
        (['', ''], 0),
        (['a', 'aaa'], 3),
        (['aA', 'aAAbbbb'], 3),
        (['z', 'ZZ'], 0),
    ]:
        res = solution.numJewelsInStones(*case)
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #11
0
def test():
    solution = Solution()
    for case, ans in [
        ([1, 1, 3, 5], True),
        ([1, 1, 2, 2], False),
        ([1, 1, 1, 1], True),
        ([1, 2, 39, 17], True),
    ]:
        res = solution.reachingPoints(*case)
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #12
0
def test_exhausted():
    solution = Solution()

    n = 10**5
    ans_array = brute_force_array(n)
    for k in range(1, n + 1):
        res = solution.findKthNumber(n, k)
        ans = ans_array[k - 1].strip()
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=(n, k))
            sys.exit(status)

        print 'Test {}: n={:<8} k={:<8} ans={:<8} passed!'.format(k, n, k, ans)
def test():
    for case, ans in [
        (['(()(()(()'], 2),
        (['(()'], 2),
        (["))))())()()(()"], 4),
        (["()(()"], 2),
        (["(()"], 2),
        ([')()())'], 4),
    ]:
        res = longest_parentheses(*case)
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #14
0
def test3():
    solution = Solution()

    for c in range(1000):
        case = generate_random_nk(random.randint(1, 10**5 + 1))
        res = solution.findKthNumber(*case)
        ans = str(brute_force(*case))
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)

        print 'Test {}: n={:<8} k={:<8} ans={:<8} passed!'.format(
            c, case[0], case[1], ans)
예제 #15
0
def test():
    solution = Solution()
    for case, ans in [
        ('0P', False),
        ('', True),
        ('1', True),
        ("A man, a plan, a canal: Panama", True),
        ('race a car', False),
    ]:
        res = solution.isPalindrome(case)
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
def test():
    solution = Solution()
    for case, ans in [
        ([[9, 5, 6, 2, 4, 3, 6, 2],
          [5, 7, 6, 2, 2, 1, 3, 0, 2, 8, 9, 7, 7, 3, 2, 2, 9, 4, 5, 1], 28], [
              9, 5, 7, 6, 5, 6, 2, 4, 3, 6, 2, 2, 2, 1, 3, 0, 2, 8, 9, 7, 7, 3,
              2, 2, 9, 4, 5, 1
          ]),
        ([[
            4, 6, 9, 1, 0, 6, 3, 1, 5, 2, 8, 3, 8, 8, 4, 7, 2, 0, 7, 1, 9, 9,
            0, 1, 5, 9, 3, 9, 3, 9, 7, 3, 0, 8, 1, 0, 9, 1, 6, 8, 8, 4, 4, 5,
            7, 5, 2, 8, 2, 7, 7, 7, 4, 8, 5, 0, 9, 6, 9, 2
        ],
          [
              9, 9, 4, 5, 1, 2, 0, 9, 3, 4, 6, 3, 0, 9, 2, 8, 8, 2, 4, 8, 6, 5,
              4, 4, 2, 9, 5, 0, 7, 3, 7, 5, 9, 6, 6, 8, 8, 0, 2, 4, 2, 2, 1, 6,
              6, 5, 3, 6, 2, 9, 6, 4, 5, 9, 7, 8, 0, 7, 2, 3
          ], 60], [
              9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 6, 8, 8, 4, 4, 5, 7,
              5, 2, 8, 2, 7, 7, 7, 4, 8, 5, 0, 9, 6, 9, 2, 0, 2, 4, 2, 2, 1, 6,
              6, 5, 3, 6, 2, 9, 6, 4, 5, 9, 7, 8, 0, 7, 2, 3
          ]),
        ([[8, 9], [3, 9], 3], [9, 8, 9]),
        ([[1, 6, 5, 4, 7, 3, 9, 5, 3, 7, 8, 4, 1, 1, 4], [4, 3, 1, 3, 5, 9],
          21], [4, 3, 1, 6, 5, 4, 7, 3, 9, 5, 3, 7, 8, 4, 1, 3, 5, 9, 1, 1,
                4]),
        ([[8, 9, 3, 9, 8, 9, 3, 9], [3, 9, 8, 9, 3, 9, 8, 9],
          9], [9, 9, 9, 9, 9, 9, 9, 8, 9]),
        ([[1, 1, 9], [1, 1, 9], 3], [9, 1, 9]),
        ([
            random.sample(range(100000), 100000),
            random.sample(range(100000), 100000), 20
        ], True),
            # ([random.sample(range(100000), 100000), random.sample(range(100000), 100000), 100000], True),
        ([[1, 2, 9, 3], [1, 2, 9, 3], 2], [9, 9]),
        ([[1, 2, 9, 3], [], 2], [9, 3]),
        ([[], [1, 2, 9, 3], 2], [9, 3]),
        ([[3, 4, 6, 5], [9, 1, 2, 5, 8, 3], 5], [9, 8, 6, 5, 3]),
        ([[6, 7], [6, 0, 4], 5], [6, 7, 6, 0, 4]),
        ([[8, 8, 8], [8, 8, 8, 8], 7], [8, 8, 8, 8, 8, 8, 8]),
    ]:
        res = solution.maxNumber(*case)
        if ans is not True:
            try:
                assert res == ans
            except AssertionError as e:
                status = fail_string(res=res, ans=ans, case=case)
                sys.exit(status)
예제 #17
0
def test():
    solution = Solution()
    for case, ans in []:
        res = solution.solve(*case)
        if ans is True:
            # we just want to test the algorithm on random inputs
            print res
            continue

        if ans is None:
            # we have a bruteforce algorithm to test against
            ans = bruteforce
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #18
0
def test():
    solution = Solution()
    for case, ans in [
        ([[1, 2, 5, 6], [3, 4]], 3.5),
        ([[472, 490, 503, 515, 532, 539, 544, 548, 549, 555],
          [482, 500, 510, 531, 537, 538, 550, 565, 579, 590]], -1),
        ([[
            20, 34, 36, 37, 40, 42, 52, 61, 90, 98, 99, 109, 156, 165, 173,
            174, 196, 199, 213, 238, 247, 279, 286, 292, 306, 309, 313, 321,
            322, 331, 337, 342, 346, 357, 365, 385, 403, 414, 444, 446, 447,
            454, 461, 464, 467, 472, 490, 503, 515, 532, 539, 544, 548, 549,
            555, 567, 577, 591, 594, 599, 609, 624, 629, 641, 661, 663, 670,
            672, 674, 711, 716, 725, 783, 786, 789, 804, 807, 823, 831, 840,
            842, 850, 857, 859, 865, 872, 873, 898, 906, 943, 947, 953, 954,
            964, 971, 972, 987, 989, 990, 993
        ],
          [
              25, 45, 51, 58, 59, 60, 65, 75, 82, 102, 105, 133, 166, 171, 179,
              183, 209, 237, 240, 241, 244, 250, 251, 267, 289, 290, 299, 316,
              325, 353, 363, 373, 376, 384, 387, 404, 407, 409, 414, 416, 421,
              448, 455, 459, 465, 482, 500, 510, 531, 537, 538, 550, 565, 579,
              590, 591, 599, 608, 615, 623, 636, 637, 638, 644, 661, 662, 667,
              675, 677, 687, 700, 704, 731, 745, 787, 799, 802, 818, 837, 845,
              862, 875, 877, 883, 899, 905, 912, 922, 923, 928, 931, 947, 954,
              956, 959, 964, 979, 992, 998, 999
          ]], -1),
        ([sample_nums(10000), sample_nums(10000)], -1),
        ([sample_nums(10), sample_nums(3)], -1),
            # ([sample_nums(10000), sample_nums(1)], -1),
        ([[1, 3], [2]], 2),
        ([[1, 2], [3, 4]], 2.5),
        ([[4, 6, 8, 10, 12], [9]], 8.5),
        ([[4, 6, 8, 10, 12], [13]], 9),
        ([[4, 6, 8, 10, 12], [5, 7, 9, 11, 13]], 8.5),
        ([[4, 6, 8], [5, 7, 9]], 6.5),
        ([[4, 6, 8, 10], [5, 7, 9]], 7),
    ]:
        res = solution.findMedianSortedArrays(*case)
        try:
            if ans == -1:
                ans = brute_median_of_2(*case)

            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #19
0
def test():
    for case, ans in [
        ([1000], 'One Thousand'),
        ([20], 'Twenty'),
        ([0], "Zero"),
        ([100], "One Hundred"),
        ([123], "One Hundred Twenty Three"),
        ([12345], "Twelve Thousand Three Hundred Forty Five"),
        ([1234567],
         "One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"
         ),
    ]:
        res = int_to_words(*case)
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #20
0
def test():
    solution = Solution()
    for case, ans in [
        (["aabba"], "abbaabba"),
        (['aea'], 'aea'),
        (['a'], 'a'),
        ([''], ''),
        (['aacecaaa'], 'aaacecaaa'),
        (['abcd'], 'dcbabcd'),
        (['xxx'*1000 + 'y' + 'xxx'*1000], 'xxx'*1000 + 'y' + 'xxx'*1000),
        (['xxx'*1000], 'xxx'*1000),
    ]:
        res = solution.shortestPalindrome(*case)
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #21
0
def test():
    for case, ans in [
            # (['a' * 23, 'a.' * 23 + 'a' * 23], False),
            # (["abcde", "*.*.*.*."], True),
            # (['c', '.*'], True),
            # (['c', '*.'], True),
            # (['c', '*.*'], True),
            # (['', '.'], False),
            # (['', ''], True),
            # ([' ', ''], False),
            # (["a","a"], True),
            # (["bbbb","bbbb"], True),
            # (["askdhfpasiudyfhkjshbdkljfhiushdf","askdhfpasiudyfhkjshbdkljfhiushdf"], True),
            # (["b","."], True),
            # (["skjdfhaskjdhflkjhj","."*len('skjdfhaskjdhflkjhj')], True),
            # (["c","*"], True),
            # (["","*"], True),
            # (["kjsadhflkujhdslfkj","*"], True),
            # (['', '**'], True),
            # (['a', 'a*'], True),
            # (['zl', 'z.*'], True),
            # (['zld', 'z.*'], True),
            # (['zlahsdklfjh', 'z.*'], True),
        (["aa", "a"], False),
        (["aa", "aa"], True),
        (["aaa", "aa"], False),
        (["aa", "a*"], True),
        (["aa", ".*"], True),
        (["ab", ".*"], True),
        (["aab", "c*a*b"], True),
            #         (["aaaabaaaabbbbaabbbaabbaababbabbaaaababaaabbbbbbaabbbabababbaaabaabaaaaaabbaabbbbaababbababaabbbaababbbba", "*****b*aba***babaa*bbaba***a*aaba*b*aa**a*b**ba***a*a*"], True),
            #         (["abbabaaabbabbaababbabbbbbabbbabbbabaaaaababababbbabababaabbababaabbbbbbaaaabababbbaabbbbaabbbbababababbaabbaababaabbbababababbbbaaabbbbbabaaaabbababbbbaababaabbababbbbbababbbabaaaaaaaabbbbbaabaaababaaaabb",
            #             "**aa*****ba*a*bb**aa*ab****a*aaaaaa***a*aaaa**bbabb*b*b**aaaaaaaaa*a********ba*bbb***a*ba*bb*bb**a*b*bb"], False),
            #         (["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
            # "*aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa*"], False)
    ]:
        string, pattern = case
        solution = Solution()
        res = solution.isMatch(string, pattern)
        try:
            assert res == ans
        except AssertionError as e:
            sys.exit(fail_string(res=res, ans=ans, case=case))
예제 #22
0
def test():
    solution = Solution()
    for case, ans in [
        (1, 'A'),
        (3, 'C'),
        (26, 'Z'),
        (27, 'AA'),
        (28, 'AB'),
        (12356630, 'ZZZZZ'),
        (5646683826134, 'ZZZZZZZZZ'),
        (random.randint(1, BASE_26[-1]), True),
    ]:
        res = solution.convertBaseTheStandardWay(case)
        if ans is not True:
            try:
                assert res == ans
            except AssertionError as e:
                status = fail_string(res=res, ans=ans, case=case)
                sys.exit(status)
        else:
            print 'Convert {} into {}'.format(case, res)
예제 #23
0
def test():
    for case, ans in [
        ([[1, 1, 1, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 1],
          [1, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0],
          [0, 0, 0, 1, 1, 1, 1]], 15),
        ([[0, 0], [0, 0]], 0),
        ([[0]], 0),
        ([[1, 1, -1], [1, -1, 1], [-1, 1, 1]], 0),
        ([[0, 1, -1], [1, 0, -1], [1, 1, 1]], 5),
        ([[1, 1, 1, 0], [1, 0, 0, 1], [0, 1, 0, 1], [1, 1, 1, 0]], 9),
        ([[1, 1, 1], [1, 0, 1], [1, 1, 0]], 7),

            # ([[random.randint(-1, 1) for i in range(100)] for j in range(100)], 100),
    ]:
        # res = pick_cherry(case) # single thread, wrong results
        res = pick_2_cherries(case)  # dual thread, dual possibilities
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #24
0
def test():
    solution = Solution()
    for case, ans in [
        ([[3, 1, 4, 1, 5], 2], 2),
        ([[1, 2, 3, 4, 5], 1], 4),
        ([[1, 3, 1, 5, 4], 0], 1),
    ]:
        res = solution.findPairs(*case)
        if ans is True:
            # we just want to test the algorithm on random inputs
            print res
            continue

        if ans is None:
            # we have a bruteforce algorithm to test against
            ans = bruteforce
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #25
0
def test():
    for case, ans in [
        ([[1, -4, 5, -99], [2, -2, -2, -1]], 3),
        ([[1, 2, 1], [-2, -3, -3], [3, 2, -2]], 1),
        ([[3, -20, 30], [-3, 4, 0]], 1),
        ([[-1, 1], [1, 2]], 2),
        ([[0, -3], [-10, 0]], 4),
        ([
            [-2, -3, 3],
            [-5, -10, 1],
            [10, 30, -5],
        ], 7),
        ([[]], 1),
        ([[2], [1]], 1),
        ([[-3, 5]], 4),
    ]:
        res = hp(case)
        try:
            assert res == ans
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #26
0
def test():
    for case, ans in [
        (["apjesgpsxoeiokmqmfgvjslcjukbqxpsobyhjpbgdfruqdkeiszrlmtwgfxyfostpqczidfljwfbbrflkgdvtytbgqalguewnhvvmcgxboycffopmtmhtfizxkmeftcucxpobxmelmjtuzigsxnncxpaibgpuijwhankxbplpyejxmrrjgeoevqozwdtgospohznkoyzocjlracchjqnggbfeebmuvbicbvmpuleywrpzwsihivnrwtxcukwplgtobhgxukwrdlszfaiqxwjvrgxnsveedxseeyeykarqnjrtlaliyudpacctzizcftjlunlgnfwcqqxcqikocqffsjyurzwysfjmswvhbrmshjuzsgpwyubtfbnwajuvrfhlccvfwhxfqthkcwhatktymgxostjlztwdxritygbrbibdgkezvzajizxasjnrcjwzdfvdnwwqeyumkamhzoqhnqjfzwzbixclcxqrtniznemxeahfozp"], 452),
        (["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"], 1),
        (['ab'], 1),
        ([''], 0),
        (['aab'], 1),
        (['abcdeffedcbaabcdeffedcbbabcdeffedcbaabcdeffedcbeabcdeffedcbaabcdeffedcbbabcdeffedcbaabcdeffedcbeabcdeffedcbaabcdeffedcbbabcdeffedcbaabcdeffedcbe'], 17),
        (['abcdeffedcbaabcdeffedcbbabcdeffedcbaabcdeffedcbe'], 5),
        (['abcdeffedcbaabcdeffedcbb'], 2),
        (['abcdeffedcba'], 0),
        (['aabbccbbdedeioie'], 3),
        ([''.join([random.choice('abcdefghijklmn') for i in range(100)])], True),
        ([''.join([random.choice('xyz') for i in range(100)])], True),
    ]:
        res = min_cut(*case)
        if ans is not True:
            try:
                assert res == ans
            except AssertionError as e:
                status = fail_string(res=res, ans=ans, case=case)
                sys.exit(status)
예제 #27
0
def test():
    solution = Solution()

    for case, ans in [
        ("aaaaabbbb1234567890ABA", 3),
        ("aaaabbaaabbaaa123456A", 3),
        ("AAAAA", 2),
        ("...", 3),
        ("..................!!!", 7),
        ('129dK8l8jjj129dk8l8jl', 1),
        ('StrongPass0', 0),
        ('aaaa', 2),
        ('', 6),
        ('aaa', 3),
        ('aaaaaa', 2),
        ("aaa111", 2),
        ("ABABABABABABABABABAB1", 2),
        ("aaaaaaaaaaaaaaaaaaaaa", 7),
        ("1234567890123456Baaaaa", 3),
    ]:
        res = solution.strongPasswordChecker(case)
        assert res == ans, fail_string(res, ans)
예제 #28
0
def test():
    solution = Solution()
    for case, ans in [
        ([
            'wordsandmeanings',
            ['words', 'and', 'meanings', 'wo', 'rds', 'mean', 'ings']
        ], [
            'wo rds and mean ings', 'wo rds and meanings',
            'words and mean ings', 'words and meanings'
        ]),
        (["catsanddog", ["cat", "cats", "and", "sand",
                         "dog"]], ["cats and dog", "cat sand dog"]),
        (["catsanddog", ["catsand", "cats", "d", "d",
                         "og"]], ["catsand d og"]),
        (["aaaabbbbccfw", ["a", "b", "c", "w",
                           "f"]], ["a a a a b b b b c c f w"]),
    ]:
        res = solution.wordBreak(*case)
        try:
            assert sorted(res) == sorted(ans)
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)
예제 #29
0
def test():
    solution = Solution()
    for case, ans in [
        ([[1, 2, 2]], 4),
        ([[]], 0),
        ([[1e6]], 1),
        ([[1, 100]], 3),
        ([[1000, 100]], 3),
        ([[0, 1, 0, 2, 0, 3, 0, 4]], 12),
        ([[1, 10, 2]], 4),
        ([[1, 3, 2, 4]], 6),
        ([[1, 10, 11, 1]], 7),
        ([[10, 8, 1, 2, 4, 5, 4, 1, 0, -1, -2]], 32),
            # ([random.sample(range(100000), 100000)], True),
    ]:
        # print case
        res = solution.candy(*case)
        if ans is not True:
            try:
                assert res == ans
            except AssertionError as e:
                status = fail_string(res=res, ans=ans, case=case)
                sys.exit(status)
예제 #30
0
def test():
    solution = Solution()

    for case, ans in [
        ([[["a", "b"], ["a", "a"]],
          ["aba", "baa", "bab", "aaab", "aaa", "aaaa",
           "aaba"]], ["aaa", "aaab", "aaba", "aba", "baa"]),
        ([[["a", "a"]], ["aaa"]], []),
        ([["a"], ["a"]], ["a"]),
        ([[['o', 'a', 'a', 'n'], ['e', 't', 'a', 'e'], ['i', 'h', 'k', 'r'],
           ['i', 'f', 'l', 'v']], ["aaa", "a", "aa",
                                   "aaakl"]], ['a', 'aa', 'aaakl', 'aaa']),
        ([[['o', 'a', 'a', 'n'], ['e', 't', 'a', 'e'], ['i', 'h', 'k', 'r'],
           ['i', 'f', 'l', 'v']], ["aaa", "a", "aa", "aaaao",
                                   "aaaaoe"]], ['a', 'aa', 'aaa']),
        ([[['o', 'a', 'a', 'n'], ['e', 't', 'a', 'e'], ['i', 'h', 'k', 'r'],
           ['i', 'f', 'l', 'v']], ["aaa", "aat", "ahk", "erv", "eee",
                                   "eakl"]], ['aat', 'erv', 'eakl', 'aaa']),
        ([[['o', 'a', 'a', 'n'], ['e', 't', 'a', 'e'], ['i', 'h', 'k', 'r'],
           ['i', 'f', 'l', 'v']],
          ["oaan", "oaaa", "oateihkaa", "vlkr",
           "vrkl"]], ['vrkl', 'oaaa', 'oaan', 'oateihkaa', 'vlkr']),
        ([[['o', 'a', 'a', 'n'], ['e', 't', 'a', 'e'], ['i', 'h', 'k', 'r'],
           ['i', 'f', 'l', 'v']], ["oath", "pea", "eat",
                                   "rain"]], ['oath', 'eat']),
        ([[['o', 'a', 'a', 'n'], ['e', 't', 'a', 'e'], ['i', 'h', 'k', 'r'],
           ['i', 'f', 'l', 'v']],
          ["oath", "oate", "teoa", "rain", "if", "oei", "oaanervlfiie"]],
         ['oaanervlfiie', 'teoa', 'oate', 'oei', 'oath', 'if']),
    ]:
        print matrix_str(case[0])
        res = solution.findWords(*case)
        try:
            assert sorted(res) == sorted(ans)
        except AssertionError as e:
            status = fail_string(res=res, ans=ans, case=case)
            sys.exit(status)