ペニュプピリュリュリュミピピュポィポピリィを支える技術

※これはねこネット Advent Calendar 2024 の記事です。

import random


# 使用する文字と生成する文字列の設定
CHARACTERS = {
    'ペ': 2,
    'ミ': 2,
    'プ': 2,
    'ピ': 5,
    'リュ': 8,
    'リィ': 2,
    'ポィ': 2,
    'ポピ': 2,
    'ニュ': 2,
}


STRING_LENGTH = 15  # 生成する文字列の長さ(目安)
NUM_STRING = 5  # 生成する文字列の数


def generate_unique_strings(characters_chain, length_min, length_max, count):
    generated_strings = set()

    length = random.randrange(length_min, length_max)

    while len(generated_strings) < count:
        random_string = "".join(random.choices(characters_chain, k=length))
        generated_strings.add(random_string)

    return list(generated_strings)


def main():
    characters_chain = []
    for charactors_list in [[k] * v for k, v in CHARACTERS.items()]:
        characters_chain += charactors_list

    # ユニークな文字列を生成
    unique_strings = generate_unique_strings(characters_chain, STRING_LENGTH - 3, STRING_LENGTH + 3, NUM_STRING)

    # 結果を表示
    for idx, string in enumerate(unique_strings, start=1):
        print(f"String {idx}: {string}")


if __name__ == "__main__":
    main()

結果

String 1: ポピニュポピポィリュピニュリュニュリュニュピポピ
String 2: ピニュリィピリュリュリュピピポピリュリュリュ
String 3: ピピポィペプリュピミプペプニュリィ
String 4: ピポィリュリュリュリィピリュピリィピポピポィ
String 5: リィリュリュリュピプポィニュポピピポピリィピ

投稿日: 2024-12-22