aboutsummaryrefslogtreecommitdiff
path: root/challenge-307/steven-wilson/python/ch-2.py
blob: f910e3bf29a6984b814f0c83f55779a22efd1608 (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
36
37
38
39
#!/usr/bin/env python3


def find_anagrams(*words):
    """ Given a list of words, find any two consecutive words and if they are
    anagrams, drop the first word and keep the second. You continue this until
    there is no more anagrams in the given list and return the count of final
    list.
    >>> find_anagrams("acca", "dog", "god", "perl", "repl")
    3
    >>> find_anagrams("abba", "baba", "aabb", "ab", "ab")
    2
    """
    length_words = len(words)
    drop = 0

    if length_words < 2:
        raise ValueError("At least 2 arguments are required")

    for n, _ in enumerate(words):
        if n < length_words - 1 and are_anagrams(words[n], words[n+1]):
            drop += 1
    return length_words - drop


def are_anagrams(first, second):
    """ Are two words an anagram of each other
    >>> are_anagrams("dog", "god")
    True
    >>> are_anagrams("aabb", "ab")
    False
    """
    return sorted(first) == sorted(second)


if __name__ == "__main__":
    import doctest

    doctest.testmod(verbose=True)