【python】ランダムに「はかたのしお」から1文字出力して「はかたのしお」が出るまで頑張るプログラム

はい。

知り合いにプログラミングを教えている最中(練習問題中)に、
暇つぶしに作ったクソコードですが置いておきます。

ランダムに「はかたのしお」から1文字出力(ry

import random
ans = ["は", "か", "た", "の", "し", "お"]
arr = ["す", "し", "ざ", "ん", "ま", "い"]

while(True):
    tmp = random.choice(ans)
    print(tmp, end="")
    arr.append(tmp)
    arr.pop(0)
    if(arr == ans):
        break

print()
print("┏━━━━━━━━┓ \n┃伯方の塩┃ \n┃    ┃ \n┃ ̄Z___┃ \n┃   @┃ \n┗━━━━━━━━┛")
for s in ans:
    print(" _人人_\n >   <\n>  {}  <\n >   <\n  ̄Y^Y^ ̄".format(s))

私の環境では「━━━━━━━━」の長さがちょうどよくなる感じになっていますが、
人によってはずれる可能性もあるのでその場合は適当に調節してください。

ポイント

今回のクソコードのポイントです。

消えるすしざんまい

初期値として準備されているすしざんまいはすぐに消えます。
悲しい運命。

ちなみにarrの初期値はなんでもいいんですけど、
文字数を数えるのが面倒だなぁと思ったので、
初期値を6文字にして1文字足して1文字消すを繰り返すようにしました。

ぱっと浮かんだ6文字がすしざんまいだったのですしざんまい。
「し」がかぶっていますがこの位置なら問題ありません。

「ほたるのはか」だとワンチャンおかしくなります。
(最初の4文字が「たのしお」でもリストが一致して終了してしまう)

成功演出

伯方の塩が出現してCMっぽいアピールをされます。
楽しい。

注意点?

プログラムを改変すれば好きなように遊べるのは自明ですが、
実行にかかる時間には気をつけてください。
今回は揃う確率が6の6乗で46656分の1なので現実的な時間で終わりますが、
文字数が増えるとどうなるかわかりません。

参考までに8文字で同じことをやると16777216通りになるので、
単純計算で約360倍揃いにくくなります。

適当にやりすぎて終わらなくなっても私は知りません。
(まぁ強制終了するだけなので何のトラブルももないでしょうけど)


以上!解散!

コメント