数の分解
NumberDecomposeは,数を,例えば貨幣のようないくつかの単位に分解して表す.
バハマドル(BSD)は次の紙幣を使っている.
In[1]:=
denominations = {100, 50, 20, 10, 5, 3, 2, 1, 1/2};
BSDには3ドル札があるため,指定された額を分解する方法が他の通貨よりも多い.次は,連続する単位の間の商である.
In[2]:=
Divide @@@ Subsequences[denominations, {2}]
Out[2]=
ほとんどの通貨システムでは,商は2と5/2しかないが,この場合は5/3と3/2もある.
In[3]:=
Divide @@@ Subsequences[denominations, {2}];
BarChart[%]
Out[3]=
ある金額をバハマドルの紙幣で表すとすると,それぞれの紙幣が何枚ずつ必要であるかを調べる.
In[4]:=
NumberDecompose[598.50, denominations]
Out[4]=
NumberComposeを使ってもとの金額に戻す.
In[5]:=
NumberCompose[{5, 1, 2, 0, 1, 1, 0, 0, 1.}, denominations]
Out[5]=
次は,それぞれの紙幣を1枚ずつ使った場合の合計金額である.
In[6]:=
NumberCompose[Table[1, Length@denominations], denominations] // N
Out[6]=