Pythonを使って連続した文字列を作成したい。
数字の場合
小文字の場合
このようにaaaa~zzzzまで作ることは出来るが、これに数字もまぜて1桁から5桁の文字列を作りたい。
下のように出来るようにしたい。
a,b,・・・z,1,2・・・9,aa,ab,・・・az,a1,a2,・・・
5桁でアルファベット、数字、を使ったすべての通りの文字列を表示出来るようにしたいのですが、どのようなアルゴリズム
を作ればいいのかわかりません。コードで示していただけると嬉しいです。
[Python]連続した文字列作成
Re: [Python]連続した文字列作成
高速化を考えなければ、素直に文字数を増やしつつ、各文字数について順番に重複順列を出力していけばいいでしょう。
import sys
if 'unichr' not in globals():
unichr = chr
def moziretu(chars, len):
if len <= 0:
yield ''
else:
for c in chars:
for s in moziretu(chars, len - 1):
yield c + s
chars = [unichr(97 + i) for i in range(0, 26)] + [unichr(48 + i) for i in range(0, 10)]
minlen = 1
maxlen = 5
isfirst = True
for l in range(minlen, maxlen + 1):
for m in moziretu(chars, l):
if not isfirst:
sys.stdout.write(',')
sys.stdout.write(m)
isfirst = False
sys.stdout.write('\n')
オフトピック
[code=Python]を用いるとメンバ(?)や括弧が黒くなって隠れてしまう糞仕様対策のため、[code=text]を使用しています。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)