2016-11-12 6 views
0

[x、y、z]のようなリストと2のような数字があるとします。 この3変数と次数= 2のすべての単項式を見つけるアルゴリズムが必要ですある程度の変数と次数を持つ単項式をすべて見つけてください

私のアルゴリズム:

def mul(x:list, y:list) -> list: 
     return ["".join(elm) for elm in product(x, y)] 

def f(x:list, n:int) -> list: 
    r = x; 
    for i in range(n-1): 
     r = mul(r, x) 
    return r 

>>> f(['x','y','z'],2) 
['xx', 'xy', 'xz', 'yx', 'yy', 'yz', 'zx', 'zy', 'zz'] 

これを行うには、任意のより良いアルゴリズムがありますか?

EDIT:!

1) 'XZ' = 'ZX' 2と仮定)と仮定X-X '' = 'X^2'

+0

質問が広すぎます。これを行うためのアルゴリズムがたくさんあると思いますが、探しているアルゴリズムの目的のプロパティが何であるかははっきりしません。 (本当にこの問題を解決するすべてのアルゴリズムが必要ですか?) –

+0

申し訳ありませんが、私はより良いアルゴリズムでこれを行う必要があります、私は私の問題のための他の解決策を見つけることができません。 –

+0

「より良い」とはどういう意味ですか?あなたの正確な要件は何ですか?より高速なアルゴリズムが必要ですか?どのくらい速くすべきか? –

答えて

3

私は、あなたが探しているが呼ばれると信じてproductモジュールitertoolsから

from itertools import product 

a=product(['x','y','z'], repeat=2) 
list(map(lambda x: ''.join(x), a)) 

出力:

['xx', 'xy', 'xz', 'yx', 'yy', 'yz', 'zx', 'zy', 'zz'] 
+0

私はこれを行うために別のアルゴリズムが必要です。あなたの答えは非常に良いです、ありがとう –

関連する問題