Instructions: Write a program to generate all potential anagrams of an input string.

For example, the potential anagrams of “biro” are

biro bior brio broi boir bori ibro ibor irbo irob iobr iorb rbio rboi ribo riob roib robi obir obri oibr oirb orbi orib

V1.0 Code:

#ana.py
import itertools 
def anagram_letters(letters):
    return set([ "".join(a) for a in itertools.permutations([e for e in letters],len(letters))])
	#think about how to write itertools.permutations in V2.0

如何实现itertools.permutations

V1.0 Test:

#test_ana.py
from ana import *
from unittest import TestCase

class TestAnagram(TestCase):

    def test_1_word(self):
        self.assertEqual(anagram_letters("a"),{"a"}) #he differnce between(a) and (a,)

    def test_2_word(self):
        self.assertEqual(anagram_letters("ab"),set(["ab","ba"]))

    def test_2_same_word(self):
        self.assertEqual(anagram_letters("bb"),{"bb"})

    def test_3_same_word(self):
        self.assertEqual(anagram_letters("bbb"),{"bbb"})

    def test_len_4_word(self):
        self.assertEqual(len(anagram_letters("aabb")),6)

    def test_len_4_different_word(self):
            self.assertEqual(len(anagram_letters("abcde")),120)