Разложение чисел
NumberDecompose выражает число во множественных единицах измерения, например, в валютных единицах разного достоинства.
Валюта Багам (BSD) использует банкноты следующего достоинства.
In[1]:=
![Click for copyable input](assets.ru/decomposition-of-numbers/In_14.png)
denominations = {100, 50, 20, 10, 5, 3, 2, 1, 1/2};
BSD допускает большoе количество вариантов размена валюты благодаря наличию банкноты достоинством 3 BSD. Они являются отношением между последовательными номиналами.
In[2]:=
![Click for copyable input](assets.ru/decomposition-of-numbers/In_15.png)
Divide @@@ Subsequences[denominations, {2}]
Out[2]=
![](assets.ru/decomposition-of-numbers/O_14.png)
В большинстве валютных систем существуют только отношения 2 и 5/2, а в данном случае ещё имеются 5/3 и 3/2.
In[3]:=
![Click for copyable input](assets.ru/decomposition-of-numbers/In_16.png)
Divide @@@ Subsequences[denominations, {2}];
BarChart[%]
Out[3]=
![](assets.ru/decomposition-of-numbers/O_15.png)
Разложить заданное количество багамских долларов на имеющиеся номиналы банкнот.
In[4]:=
![Click for copyable input](assets.ru/decomposition-of-numbers/In_17.png)
NumberDecompose[598.50, denominations]
Out[4]=
![](assets.ru/decomposition-of-numbers/O_16.png)
Запросите начальное количество, используя NumberCompose.
In[5]:=
![Click for copyable input](assets.ru/decomposition-of-numbers/In_18.png)
NumberCompose[{5, 1, 2, 0, 1, 1, 0, 0, 1.}, denominations]
Out[5]=
![](assets.ru/decomposition-of-numbers/O_17.png)
Полученное значение представляет собой количество денег, полученных банкнотой каждого номинала.
In[6]:=
![Click for copyable input](assets.ru/decomposition-of-numbers/In_19.png)
NumberCompose[Table[1, Length@denominations], denominations] // N
Out[6]=
![](assets.ru/decomposition-of-numbers/O_18.png)