数の分解
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]=
