この記事は重要度が最後以外ほぼないです。暇な人は最後以外も見てください。
きっかけ
toki ponaでは、数字を表すとき、規則性が複雑である。
1,2,5,20,100を表す単語しかなく(wan,tu,luka,mute,ale)、大きい数字を記述するときには少し時間がかかるだろう。
(12345678987654321が"wan ale mute tu wan ale mute mute luka ale mute mute mute luka tu ale mute mute mute mute luka tu tu ale mute mute mute mute luka tu ale mute mute mute luka ale mute mute tu wan ale mute wan"だってわかる人はほとんどいないはず。)
そこで、登場するのが、テッテレープログラミング~~とはいえどまだ初心者では...
方法
まず数字を↓のように分けて、
桁数が偶数の場合、2桁ずつ区切る。
桁数が奇数の場合、最初は1桁目で区切り、そのあとは2桁ずつ区切る。
区切った数が20以下になるまで答えにmuteをつけて20を引き続ける、
区切った数が5以下になるまで答えにlukaをつけて5を引き続ける、
区切った数が2以下になるまで答えにtuをつけて2を引き続ける、
区切った数が1以下になるまで答えにwanをつけて1を引き続ける。
そして、もしその区切った数が最後でなければaleをつける。
これで、完成...!
ということで、やっていきましょう!
2時間半後...
はぁぁぁ...はぁぁぁ...デキタァ!
プログラム(長注意)
#区切り関数の定義
def kipisi(n):
strn=str(n)
if len(strn)%2==0:
l=[]
a=0
while not a==len(strn):
l=l+[strn[a]+strn[a+1]]
a+=2
return (l)
if len(strn)%2==1:
l=[]
a=0
l=l+[strn[a]]
a+=1
while not a==len(strn):
l=l+[strn[a]+strn[a+1]]
a+=2
return (l)
#数字の読み込み
nanpa=input("Input the number.")
Ans=''
#数字を区切る
pona=kipisi(int(nanpa))
#区切った数字をtokiponaに変換
lili=0
while not lili==len(pona):
suli=int(pona[lili])
while not suli<20:
Ans=Ans+'mute '
suli-=20
while not suli<5:
Ans=Ans+'luka '
suli-=5
while not suli<2:
Ans=Ans+'tu '
suli-=2
while not suli<1:
Ans=Ans+'wan '
suli-=1
lili+=1
if not lili==len(pona):
Ans=Ans+'ale '
#What a hell!?
print(Ans)
まとめ
このプログラムを使って数字を変換させてみてください!
Top comments (0)