[python]定めた文字列の全通りの出力

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ねこ-*-

[python]定めた文字列の全通りの出力

#1

投稿記事 by ねこ-*- » 9年前

入力した文字が"a"と"b"と"1"だったとします。
これらから文字列を作成した時
a, b, 1, aa, ab, a1, ba, bb, b1, 1a, 1b, 11, aaa,・・・

このように指定した文字と数字を使って文字列を作成したいです。
アルゴリズムをコードで欲しいです。
宜しくお願いします。 

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: [python]定めた文字列の全通りの出力

#2

投稿記事 by みけCAT » 9年前

[Python]連続した文字列作成のコードとほとんど同様にできます。

コード:

import sys

def moziretu(chars):
    def moziretu_internal(len):
        if len <= 0:
            yield ''
        else:
            for c in chars:
                for s in moziretu_internal(len - 1):
                    yield c + s
    length = 1
    while True:
        for ret in moziretu_internal(length):
            yield ret
        length += 1

chars = list(sys.stdin.readline().rstrip())

isfirst = True
for m in moziretu(chars):
    if not isfirst:
        sys.stdout.write(', ')
    sys.stdout.write(m)
    isfirst = False
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

かずま

Re: [python]定めた文字列の全通りの出力

#3

投稿記事 by かずま » 9年前

4文字までにしています。もっとたくさんにしたければ変更してください。

コード:

def generate(t, s, n):
    if n == 0:
        print t + ",",
    else:
        for c in s:
            generate(t + c, s, n - 1)

s = raw_input("> ")
for i in range(4):
    generate("", s, i + 1)

閉鎖

“C言語何でも質問掲示板” へ戻る