tsuttsus daily blog

アイドルとか,食べ物とか,画像とか,

おつりの計算

今、高岡 詠子さんのチューリングの計算理論入門を読んでいます。

先ほど、この本の1章を読み終えました。

1章の内容としては、そもそも計算とは何かという内容でした。その中で紹介があったおつりの計算を行う手順に基づいて計算するプログラムを作成しました。せっかく作ったので公開しようと思います。Pythonで記述しました。型変換使いまくり、冗長でごめんなさい。*1

#入力
X,Y=map(str , input().split())
listX=list(X)
listY=list(Y)
if len(listX)!=len(listY):
    dif=len(listX)-len(listY)
    for i in range(dif):
        listY.insert(0,0)
flag=0
#Ⅴ
for i in range(len(listX)-1,-1,-1):
    x=int(listX[i])
    y=int(listY[i])
    #Ⅰ
    if flag==1:
        if x==0:
            x=9
        else:
            x=x-1
            flag=0
    #Ⅲ
    if x<y:
        x=x+10
        flag=1
    # Ⅳ
    x=x-y
    listX[i]=str(x)
#出力
for i in range(len(listX)):
    print(listX[i],end="")

このローマ数字は、p21のローマ字に対応しています。変数flagは、次の桁から10借りたかどうかということを示しています。よくよく考えてみると複雑でした。

実際、引き算を考えると

change=x-y

というコードだけで書けてしまいます。どのようなことが行われているのかを考えながらプログラムを書くことは難しいと感じました。

おまけ

実行結果

5000 3500
1500

参考

高岡 詠子,チューリングの計算理論入門,講談社,2014

追記

矢久保 美緒さん*2、お誕生日おめでとうございます!