In [ ]:
def cria_matriz(tot_lin, tot_col, valor):
    matriz = []  #lista vazia
    for i in range(tot_lin):
        linha = []
        for j in range(tot_col):
            linha.append(valor)
        matriz.append(linha)
    return matriz

In [36]:
def anagrama2(string):
    
    '''
    Function that returns a list with all the anagrams from 
    a input text for len(string) == 2
    '''
    
    from math import factorial
    
    numbers = factorial(len(string)) # quantity of combinations
    print(numbers)
    
    list = []
    list_aux1 = string[0]
    list_aux2 = string[1]
    
    list.append(list_aux1 + list_aux2)
    list.append(list_aux2 + list_aux1)
    
    return list

In [37]:
anagrama2('ab')


2
Out[37]:
['ab', 'ba']

In [126]:
# Usando um pronto agora

def anagram(string):
    
    from itertools import permutations
    
    list = []
    list = [''.join(p) for p in permutations(string)]
    
    return list

In [127]:
anagram('xy')


Out[127]:
['xy', 'yx']

In [128]:
anagram('a')


Out[128]:
['a']

In [129]:
anagram('abc')


Out[129]:
['abc', 'acb', 'bac', 'bca', 'cab', 'cba']

In [130]:
anagram('casa')


Out[130]:
['casa',
 'caas',
 'csaa',
 'csaa',
 'caas',
 'casa',
 'acsa',
 'acas',
 'asca',
 'asac',
 'aacs',
 'aasc',
 'scaa',
 'scaa',
 'saca',
 'saac',
 'saca',
 'saac',
 'acas',
 'acsa',
 'aacs',
 'aasc',
 'asca',
 'asac']

In [131]:
anagram('manila')


Out[131]:
['manila',
 'manial',
 'manlia',
 'manlai',
 'manail',
 'manali',
 'mainla',
 'mainal',
 'mailna',
 'mailan',
 'maianl',
 'maialn',
 'malnia',
 'malnai',
 'malina',
 'malian',
 'malani',
 'malain',
 'maanil',
 'maanli',
 'maainl',
 'maailn',
 'maalni',
 'maalin',
 'mnaila',
 'mnaial',
 'mnalia',
 'mnalai',
 'mnaail',
 'mnaali',
 'mniala',
 'mniaal',
 'mnilaa',
 'mnilaa',
 'mniaal',
 'mniala',
 'mnlaia',
 'mnlaai',
 'mnliaa',
 'mnliaa',
 'mnlaai',
 'mnlaia',
 'mnaail',
 'mnaali',
 'mnaial',
 'mnaila',
 'mnalai',
 'mnalia',
 'mianla',
 'mianal',
 'mialna',
 'mialan',
 'miaanl',
 'miaaln',
 'minala',
 'minaal',
 'minlaa',
 'minlaa',
 'minaal',
 'minala',
 'milana',
 'milaan',
 'milnaa',
 'milnaa',
 'milaan',
 'milana',
 'miaanl',
 'miaaln',
 'mianal',
 'mianla',
 'mialan',
 'mialna',
 'mlania',
 'mlanai',
 'mlaina',
 'mlaian',
 'mlaani',
 'mlaain',
 'mlnaia',
 'mlnaai',
 'mlniaa',
 'mlniaa',
 'mlnaai',
 'mlnaia',
 'mliana',
 'mliaan',
 'mlinaa',
 'mlinaa',
 'mliaan',
 'mliana',
 'mlaani',
 'mlaain',
 'mlanai',
 'mlania',
 'mlaian',
 'mlaina',
 'maanil',
 'maanli',
 'maainl',
 'maailn',
 'maalni',
 'maalin',
 'manail',
 'manali',
 'manial',
 'manila',
 'manlai',
 'manlia',
 'maianl',
 'maialn',
 'mainal',
 'mainla',
 'mailan',
 'mailna',
 'malani',
 'malain',
 'malnai',
 'malnia',
 'malian',
 'malina',
 'amnila',
 'amnial',
 'amnlia',
 'amnlai',
 'amnail',
 'amnali',
 'aminla',
 'aminal',
 'amilna',
 'amilan',
 'amianl',
 'amialn',
 'amlnia',
 'amlnai',
 'amlina',
 'amlian',
 'amlani',
 'amlain',
 'amanil',
 'amanli',
 'amainl',
 'amailn',
 'amalni',
 'amalin',
 'anmila',
 'anmial',
 'anmlia',
 'anmlai',
 'anmail',
 'anmali',
 'animla',
 'animal',
 'anilma',
 'anilam',
 'aniaml',
 'anialm',
 'anlmia',
 'anlmai',
 'anlima',
 'anliam',
 'anlami',
 'anlaim',
 'anamil',
 'anamli',
 'anaiml',
 'anailm',
 'analmi',
 'analim',
 'aimnla',
 'aimnal',
 'aimlna',
 'aimlan',
 'aimanl',
 'aimaln',
 'ainmla',
 'ainmal',
 'ainlma',
 'ainlam',
 'ainaml',
 'ainalm',
 'ailmna',
 'ailman',
 'ailnma',
 'ailnam',
 'ailamn',
 'ailanm',
 'aiamnl',
 'aiamln',
 'aianml',
 'aianlm',
 'aialmn',
 'aialnm',
 'almnia',
 'almnai',
 'almina',
 'almian',
 'almani',
 'almain',
 'alnmia',
 'alnmai',
 'alnima',
 'alniam',
 'alnami',
 'alnaim',
 'alimna',
 'aliman',
 'alinma',
 'alinam',
 'aliamn',
 'alianm',
 'alamni',
 'alamin',
 'alanmi',
 'alanim',
 'alaimn',
 'alainm',
 'aamnil',
 'aamnli',
 'aaminl',
 'aamiln',
 'aamlni',
 'aamlin',
 'aanmil',
 'aanmli',
 'aaniml',
 'aanilm',
 'aanlmi',
 'aanlim',
 'aaimnl',
 'aaimln',
 'aainml',
 'aainlm',
 'aailmn',
 'aailnm',
 'aalmni',
 'aalmin',
 'aalnmi',
 'aalnim',
 'aalimn',
 'aalinm',
 'nmaila',
 'nmaial',
 'nmalia',
 'nmalai',
 'nmaail',
 'nmaali',
 'nmiala',
 'nmiaal',
 'nmilaa',
 'nmilaa',
 'nmiaal',
 'nmiala',
 'nmlaia',
 'nmlaai',
 'nmliaa',
 'nmliaa',
 'nmlaai',
 'nmlaia',
 'nmaail',
 'nmaali',
 'nmaial',
 'nmaila',
 'nmalai',
 'nmalia',
 'namila',
 'namial',
 'namlia',
 'namlai',
 'namail',
 'namali',
 'naimla',
 'naimal',
 'nailma',
 'nailam',
 'naiaml',
 'naialm',
 'nalmia',
 'nalmai',
 'nalima',
 'naliam',
 'nalami',
 'nalaim',
 'naamil',
 'naamli',
 'naaiml',
 'naailm',
 'naalmi',
 'naalim',
 'nimala',
 'nimaal',
 'nimlaa',
 'nimlaa',
 'nimaal',
 'nimala',
 'niamla',
 'niamal',
 'nialma',
 'nialam',
 'niaaml',
 'niaalm',
 'nilmaa',
 'nilmaa',
 'nilama',
 'nilaam',
 'nilama',
 'nilaam',
 'niamal',
 'niamla',
 'niaaml',
 'niaalm',
 'nialma',
 'nialam',
 'nlmaia',
 'nlmaai',
 'nlmiaa',
 'nlmiaa',
 'nlmaai',
 'nlmaia',
 'nlamia',
 'nlamai',
 'nlaima',
 'nlaiam',
 'nlaami',
 'nlaaim',
 'nlimaa',
 'nlimaa',
 'nliama',
 'nliaam',
 'nliama',
 'nliaam',
 'nlamai',
 'nlamia',
 'nlaami',
 'nlaaim',
 'nlaima',
 'nlaiam',
 'namail',
 'namali',
 'namial',
 'namila',
 'namlai',
 'namlia',
 'naamil',
 'naamli',
 'naaiml',
 'naailm',
 'naalmi',
 'naalim',
 'naimal',
 'naimla',
 'naiaml',
 'naialm',
 'nailma',
 'nailam',
 'nalmai',
 'nalmia',
 'nalami',
 'nalaim',
 'nalima',
 'naliam',
 'imanla',
 'imanal',
 'imalna',
 'imalan',
 'imaanl',
 'imaaln',
 'imnala',
 'imnaal',
 'imnlaa',
 'imnlaa',
 'imnaal',
 'imnala',
 'imlana',
 'imlaan',
 'imlnaa',
 'imlnaa',
 'imlaan',
 'imlana',
 'imaanl',
 'imaaln',
 'imanal',
 'imanla',
 'imalan',
 'imalna',
 'iamnla',
 'iamnal',
 'iamlna',
 'iamlan',
 'iamanl',
 'iamaln',
 'ianmla',
 'ianmal',
 'ianlma',
 'ianlam',
 'ianaml',
 'ianalm',
 'ialmna',
 'ialman',
 'ialnma',
 'ialnam',
 'ialamn',
 'ialanm',
 'iaamnl',
 'iaamln',
 'iaanml',
 'iaanlm',
 'iaalmn',
 'iaalnm',
 'inmala',
 'inmaal',
 'inmlaa',
 'inmlaa',
 'inmaal',
 'inmala',
 'inamla',
 'inamal',
 'inalma',
 'inalam',
 'inaaml',
 'inaalm',
 'inlmaa',
 'inlmaa',
 'inlama',
 'inlaam',
 'inlama',
 'inlaam',
 'inamal',
 'inamla',
 'inaaml',
 'inaalm',
 'inalma',
 'inalam',
 'ilmana',
 'ilmaan',
 'ilmnaa',
 'ilmnaa',
 'ilmaan',
 'ilmana',
 'ilamna',
 'ilaman',
 'ilanma',
 'ilanam',
 'ilaamn',
 'ilaanm',
 'ilnmaa',
 'ilnmaa',
 'ilnama',
 'ilnaam',
 'ilnama',
 'ilnaam',
 'ilaman',
 'ilamna',
 'ilaamn',
 'ilaanm',
 'ilanma',
 'ilanam',
 'iamanl',
 'iamaln',
 'iamnal',
 'iamnla',
 'iamlan',
 'iamlna',
 'iaamnl',
 'iaamln',
 'iaanml',
 'iaanlm',
 'iaalmn',
 'iaalnm',
 'ianmal',
 'ianmla',
 'ianaml',
 'ianalm',
 'ianlma',
 'ianlam',
 'ialman',
 'ialmna',
 'ialamn',
 'ialanm',
 'ialnma',
 'ialnam',
 'lmania',
 'lmanai',
 'lmaina',
 'lmaian',
 'lmaani',
 'lmaain',
 'lmnaia',
 'lmnaai',
 'lmniaa',
 'lmniaa',
 'lmnaai',
 'lmnaia',
 'lmiana',
 'lmiaan',
 'lminaa',
 'lminaa',
 'lmiaan',
 'lmiana',
 'lmaani',
 'lmaain',
 'lmanai',
 'lmania',
 'lmaian',
 'lmaina',
 'lamnia',
 'lamnai',
 'lamina',
 'lamian',
 'lamani',
 'lamain',
 'lanmia',
 'lanmai',
 'lanima',
 'laniam',
 'lanami',
 'lanaim',
 'laimna',
 'laiman',
 'lainma',
 'lainam',
 'laiamn',
 'laianm',
 'laamni',
 'laamin',
 'laanmi',
 'laanim',
 'laaimn',
 'laainm',
 'lnmaia',
 'lnmaai',
 'lnmiaa',
 'lnmiaa',
 'lnmaai',
 'lnmaia',
 'lnamia',
 'lnamai',
 'lnaima',
 'lnaiam',
 'lnaami',
 'lnaaim',
 'lnimaa',
 'lnimaa',
 'lniama',
 'lniaam',
 'lniama',
 'lniaam',
 'lnamai',
 'lnamia',
 'lnaami',
 'lnaaim',
 'lnaima',
 'lnaiam',
 'limana',
 'limaan',
 'limnaa',
 'limnaa',
 'limaan',
 'limana',
 'liamna',
 'liaman',
 'lianma',
 'lianam',
 'liaamn',
 'liaanm',
 'linmaa',
 'linmaa',
 'linama',
 'linaam',
 'linama',
 'linaam',
 'liaman',
 'liamna',
 'liaamn',
 'liaanm',
 'lianma',
 'lianam',
 'lamani',
 'lamain',
 'lamnai',
 'lamnia',
 'lamian',
 'lamina',
 'laamni',
 'laamin',
 'laanmi',
 'laanim',
 'laaimn',
 'laainm',
 'lanmai',
 'lanmia',
 'lanami',
 'lanaim',
 'lanima',
 'laniam',
 'laiman',
 'laimna',
 'laiamn',
 'laianm',
 'lainma',
 'lainam',
 'amanil',
 'amanli',
 'amainl',
 'amailn',
 'amalni',
 'amalin',
 'amnail',
 'amnali',
 'amnial',
 'amnila',
 'amnlai',
 'amnlia',
 'amianl',
 'amialn',
 'aminal',
 'aminla',
 'amilan',
 'amilna',
 'amlani',
 'amlain',
 'amlnai',
 'amlnia',
 'amlian',
 'amlina',
 'aamnil',
 'aamnli',
 'aaminl',
 'aamiln',
 'aamlni',
 'aamlin',
 'aanmil',
 'aanmli',
 'aaniml',
 'aanilm',
 'aanlmi',
 'aanlim',
 'aaimnl',
 'aaimln',
 'aainml',
 'aainlm',
 'aailmn',
 'aailnm',
 'aalmni',
 'aalmin',
 'aalnmi',
 'aalnim',
 'aalimn',
 'aalinm',
 'anmail',
 'anmali',
 'anmial',
 'anmila',
 'anmlai',
 'anmlia',
 'anamil',
 'anamli',
 'anaiml',
 'anailm',
 'analmi',
 'analim',
 'animal',
 'animla',
 'aniaml',
 'anialm',
 'anilma',
 'anilam',
 'anlmai',
 'anlmia',
 'anlami',
 'anlaim',
 'anlima',
 'anliam',
 'aimanl',
 'aimaln',
 'aimnal',
 'aimnla',
 'aimlan',
 'aimlna',
 'aiamnl',
 'aiamln',
 'aianml',
 'aianlm',
 'aialmn',
 'aialnm',
 'ainmal',
 'ainmla',
 'ainaml',
 'ainalm',
 'ainlma',
 'ainlam',
 'ailman',
 'ailmna',
 'ailamn',
 'ailanm',
 'ailnma',
 'ailnam',
 'almani',
 'almain',
 'almnai',
 'almnia',
 'almian',
 'almina',
 'alamni',
 'alamin',
 'alanmi',
 'alanim',
 'alaimn',
 'alainm',
 'alnmai',
 'alnmia',
 'alnami',
 'alnaim',
 'alnima',
 'alniam',
 'aliman',
 'alimna',
 'aliamn',
 'alianm',
 'alinma',
 'alinam']

In [132]:
# Usando um pronto agora e colocando numa matriz os resultados

def cria_matriz(tot_lin, tot_col):

    matriz = []  #lista vazia
    for i in range(tot_lin):
        linha = []
        for j in range(tot_col):
            linha.append('')
        matriz.append(linha)
    return matriz

def anagram(string):
    
    from math import factorial
    from itertools import permutations
    
    list = []
    list = [''.join(p) for p in permutations(string)]
    
    lin = len(string)
    col = factorial(len(string) - 1)
    
    matriz = cria_matriz(lin, col)
    
    pos = 0
    
    for i in range(lin):
        for j in range(col):
            matriz[i][j] = list[pos]
            pos += 1
    
    return matriz

In [133]:
anagram('ab')


Out[133]:
[['ab'], ['ba']]

In [134]:
anagram('abc')


Out[134]:
[['abc', 'acb'], ['bac', 'bca'], ['cab', 'cba']]

In [135]:
anagram('xyzw')


Out[135]:
[['xyzw', 'xywz', 'xzyw', 'xzwy', 'xwyz', 'xwzy'],
 ['yxzw', 'yxwz', 'yzxw', 'yzwx', 'ywxz', 'ywzx'],
 ['zxyw', 'zxwy', 'zyxw', 'zywx', 'zwxy', 'zwyx'],
 ['wxyz', 'wxzy', 'wyxz', 'wyzx', 'wzxy', 'wzyx']]

In [136]:
anagram('anim')


Out[136]:
[['anim', 'anmi', 'ainm', 'aimn', 'amni', 'amin'],
 ['naim', 'nami', 'niam', 'nima', 'nmai', 'nmia'],
 ['ianm', 'iamn', 'inam', 'inma', 'iman', 'imna'],
 ['mani', 'main', 'mnai', 'mnia', 'mian', 'mina']]

In [ ]:


In [16]:
def is_anagram(s1, s2): 
    return sorted(s1) == sorted(s2)

In [18]:
is_anagram('manila', 'animal')


Out[18]:
True

In [ ]: