Ejemplo n.º 1
0
def test_make_ladder():
    english_words = load_words()
    wl = WordLadder('dog', 'puppy', english_words)
    word_ladder = wl.make_ladder()
    assert repr(word_ladder) == "dog" + "\t" + "cog" + "\t" + "cop" + "\t"\
                                + "copy" + "\t" + "coppy" + "\t"\
                                + "poppy" + "\t" + "puppy" + "\t"

    wl = WordLadder('sad', 'happy', english_words)
    word_ladder = wl.make_ladder()
    assert repr(word_ladder) == "sad" + "\t" + "gad" + "\t"\
                                + "gap" + "\t" + "gapy" + "\t"\
                                + "gappy" + "\t" + "happy" + "\t"

    wl = WordLadder('red', 'yellow', english_words)
    word_ladder = wl.make_ladder()
    assert repr(word_ladder) == "red" + "\t" + "bed" + "\t"\
                                + "bel" + "\t" + "bell" + "\t"\
                                + "bello" + "\t" + "bellow" + "\t"\
                                + "yellow" + "\t"

    wl = WordLadder('command', 'line', english_words)
    word_ladder = wl.make_ladder()
    assert repr(word_ladder) == "command" + "\t" + "commend" + "\t"\
                                + "compend" + "\t" + "comped" + "\t"\
                                + "coped" + "\t" + "loped" + "\t"\
                                + "lope" + "\t" + "lone" + "\t"\
                                + "line" + "\t"
Ejemplo n.º 2
0
def test_make_ladder():
    word_list = load_words("cat", "hat")
    ladder = WordLadder("cat", "hat", word_list)
    word_ladder = ladder.make_ladder()
    assert word_ladder.items == ["cat", "hat"]
    word_list = load_words("love", "hate")
    ladder = WordLadder("love", "hate", word_list)
    word_ladder = ladder.make_ladder()
    assert word_ladder.items == ["love", "hove", "have", "hate"]
    word_list = load_words("angel", "devil")
    ladder = WordLadder("angel", "devil", word_list)
    word_ladder = ladder.make_ladder()
    assert word_ladder.items == [
        "angel", "anger", "aeger", "leger", "lever", "level", "devel", "devil"
    ]
    word_list = load_words("earth", "ocean")
    ladder = WordLadder("earth", "ocean", word_list)
    word_ladder = ladder.make_ladder()
    assert word_ladder.items == [
        "earth", "barth", "barih", "baris", "batis", "bitis", "aitis", "antis",
        "antas", "antal", "ontal", "octal", "octan", "ocean"
    ]
    # Different length test cases
    word_list = load_words("cat", "five")
    ladder = WordLadder("cat", "five", word_list)
    word_ladder = ladder.make_ladder()
    assert word_ladder.items == ["cat", "fat", "fit", "fie", "five"]
    word_list = load_words("five", "cat")
    ladder = WordLadder("five", "cat", word_list)
    word_ladder = ladder.make_ladder()
    assert word_ladder.items == ["five", "cive", "cave", "cate", "cat"]
    word_list = load_words("dog", "puppy")
    ladder = WordLadder("dog", "puppy", word_list)
    word_ladder = ladder.make_ladder()
    assert word_ladder.items == [
        "dog", "cog", "cop", "copy", "coppy", "poppy", "puppy"
    ]
    word_list = load_words("sad", "happy")
    ladder = WordLadder("sad", "happy", word_list)
    word_ladder = ladder.make_ladder()
    assert word_ladder.items == ["sad", "gad", "gap", "gapy", "gappy", "happy"]
    word_list = load_words("red", "yellow")
    ladder = WordLadder("red", "yellow", word_list)
    word_ladder = ladder.make_ladder()
    assert word_ladder.items == [
        "red", "bed", "bel", "bell", "bello", "bellow", "yellow"
    ]
    word_list = load_words("command", "line")
    ladder = WordLadder("command", "line", word_list)
    word_ladder = ladder.make_ladder()
    assert word_ladder.items == [
        "command", "commend", "compend", "comped", "coped", "loped", "lope",
        "lone", "line"
    ]
Ejemplo n.º 3
0
def test_make_ladder():

    test_ladder1 = WordLadder('cat', 'hat', valid_words[3])
    test_ladder2 = WordLadder('love', 'hate', valid_words[4])
    test_ladder3 = WordLadder('angel', 'devil', valid_words[5])
    test_ladder4 = WordLadder('earth', 'ocean', valid_words[5])

    assert test_ladder1.make_ladder().size() == 2
    assert test_ladder2.make_ladder().size() == 4
    assert test_ladder3.make_ladder().size() == 8
    assert test_ladder4.make_ladder().size() == 14
Ejemplo n.º 4
0
def test_make_ladder():
    wordlist = set()
    with open('words_alpha.txt') as word_file:
        for line in word_file:
            word = line.strip().split()
            wordlist.add(word[0])

    ladder = WordLadder("cat", "hat", wordlist)
    assert repr(ladder.make_ladder()) == "cat\that\t"

    ladder = WordLadder("love", "hate", wordlist)
    assert repr(ladder.make_ladder()) == "love\thove\thave\thate\t"
Ejemplo n.º 5
0
def test_make_ladder():
    """test make_ladder method of WordLadder class"""
    wordlist = [
        "love", "hove", "have", "hate", "lone", "hone", "hale", "bate", "life"
    ]
    world_ladder = WordLadder("love", "hate", wordlist)
    res = world_ladder.make_ladder()
    assert res == "love\thove\thave\thate\t"
Ejemplo n.º 6
0
def test_make_ladder():
    valid_words = {}
    with open('words_alpha.txt') as word_file:
        for w in word_file.read().split():
            if len(w) in valid_words.keys():
                # Add to an existing set
                valid_words[len(w)].add(w)
            else:
                # Initialize a set with one element
                valid_words[len(w)] = {w}
    wl = WordLadder("cat", "hat", valid_words[len("cat")])
    assert wl.make_ladder().items[0] == "cat"
    wl = WordLadder("love", "hate", valid_words[len("love")])
    assert wl.make_ladder().items[-1] == "hate"
    wl = WordLadder("data", "code", valid_words[len("data")])
    assert len(wl.make_ladder().items) == 5
    wl = WordLadder("angel", "devil", valid_words[len("angel")])
    assert "anger" in wl.make_ladder().items
Ejemplo n.º 7
0
def test_make_ladder():
    english_words = load_words()
    wl = WordLadder('cat', 'hat', english_words[len('cat')])
    word_ladder = wl.make_ladder()
    assert repr(word_ladder) == "cat" + "\t" + "hat" + "\t"

    wl = WordLadder('love', 'hate', english_words[len('love')])
    word_ladder = wl.make_ladder()
    assert repr(word_ladder) == "love" + "\t" + "hove" + "\t"\
                                + "have" + "\t" + "hate" + "\t"

    wl = WordLadder('earth', 'ocean', english_words[len('earth')])
    word_ladder = wl.make_ladder()
    assert repr(word_ladder) == "earth" + "\t" + "barth" + "\t"\
                                + "barih" + "\t" + "baris" + "\t"\
                                + "batis" + "\t" + "bitis" + "\t"\
                                + "aitis" + "\t" + "antis" + "\t"\
                                + "antas" + "\t" + "antal" + "\t"\
                                + "ontal" + "\t" + "octal" + "\t"\
                                + "octan" + "\t" + "ocean" + "\t"
Ejemplo n.º 8
0
def test_make_ladder():
    english_words = load_words()
    w1, w2 = 'love', 'hate'
    wl = WordLadder(w1, w2, english_words[len(w1)])
    word_ladder = wl.make_ladder()
    expected = ['love', 'hove', 'have', 'hate']
    flag = True
    for i in reversed(range(len(expected))):
        if expected[i] != word_ladder.pop():
            flag = False
    assert flag
Ejemplo n.º 9
0
def main():
    """Run an interactive command line to let the user
    input word pairs and generate word ladders"""
    english_words = load_words()
    # print(english_words[len('hel')])
    while True:
        w1, w2 = input("> ").split()
        # Create a WordLadder object
        wl = WordLadder(w1, w2, english_words[len(w1)])
        # Generate the word ladder
        word_ladder = wl.make_ladder()
        print("Ladder: ", word_ladder)
Ejemplo n.º 10
0
def main():
    """Run an interactive command line to let the user
    input word pairs and generate word ladders"""
    english_words = load_words()
    while True:
        w1, w2 = input("> ").split()
        start_time = time.time()
        # Create a WordLadder object
        wl = WordLadder(w1, w2, english_words[len(w1)])
        # Generate the word ladder
        word_ladder = wl.make_ladder()
        print("Ladder: ", word_ladder)
        print("Entire execution tooke %s seconds ---" %
              (time.time() - start_time))
Ejemplo n.º 11
0
def main():
    """Run an interactive command line to let the user
    input word pairs and generate word ladders"""
    english_words = load_words()
    # print(english_words[len('hel')])
    while True:
        w1, w2 = input("> ").split()
        # Create a WordLadder object
        if len(w1) < len(w2):
            vary_length_words = {w1}
            for i in range(len(w1), len(w2) + 1):
                vary_length_words = vary_length_words | english_words[i]
        elif len(w1) > len(w2):
            vary_length_words = {w2}
            for i in range(len(w2), len(w1) + 1):
                vary_length_words = vary_length_words | english_words[i]
        else:
            vary_length_words = english_words[len(w1)]
        wl = WordLadder(w1, w2, vary_length_words)
        # Generate the word ladder
        word_ladder = wl.make_ladder()
        print("Ladder: ", word_ladder)
Ejemplo n.º 12
0
def main():
    """Run an interactive command line to let the user
    input word pairs and generate word ladders"""
    english_words = load_words()

    while True:
        w1, w2 = input("> ").split()
        if len(w1) == len(w2):
            # Everything same with word_ladder_app
            wl = WordLadder(w1, w2, english_words[len(w1)])
            word_ladder = wl.make_ladder()
            print("Ladder: ", word_ladder)
        else:
            # a set of words for adding later
            check_words_set = set()
            diff = abs(len(w1) - len(w2))
            initial_insertion = "a"
            if len(w1) < len(w2):
                shorter = len(w1)
                longer = len(w2)
                start = w1
                end = w2
            else:
                shorter = len(w2)
                longer = len(w1)
                start = w2
                end = w1
            # add words with length in range of shorter to longer
            for i in range(shorter, longer + 1):
                for j in english_words[i]:
                    check_words_set.add(j)
            ec = ExtraCredit(start, end, check_words_set)
            word_ladder = ec.make_ladder()
            # normal print if start with w1
            if start == w1:
                print("Ladder: ", word_ladder)
            # reverse if start with w2
            elif start == w2:
                print("Ladder: ", reverse_ladder(word_ladder))