混合基计算
MixedRadix 可以在不同数位上的数字对应于不同的基的数字系统中使用.
以下为罗马军队中士兵的几个编制名称.
In[1]:=
![Click for copyable input](assets.zh/mixed-radix-computations/In_20.png)
units = {"legion", "cohort", "century", "contubernia", "soldier"};
一个军团 (legion) 由 10 个大队 (cohort) 组成,一个大队由 6 个百人队 (century) 组成,一个百人队分为 10 个小组 (contubernia) ,一个小组内有 8 名士兵.
In[2]:=
![Click for copyable input](assets.zh/mixed-radix-computations/In_21.png)
bases = MixedRadix[{10, 6, 10, 8}];
使用上面的数字系统计算一个小组内士兵的数目.
In[3]:=
![Click for copyable input](assets.zh/mixed-radix-computations/In_22.png)
FromDigits[{1, 0}, bases]
Out[3]=
![](assets.zh/mixed-radix-computations/O_19.png)
一个百人队中的士兵数目.
In[4]:=
![Click for copyable input](assets.zh/mixed-radix-computations/In_23.png)
FromDigits[{1, 0, 0}, bases]
Out[4]=
![](assets.zh/mixed-radix-computations/O_20.png)
一个大队中的士兵数目.
In[5]:=
![Click for copyable input](assets.zh/mixed-radix-computations/In_24.png)
FromDigits[{1, 0, 0, 0}, bases]
Out[5]=
![](assets.zh/mixed-radix-computations/O_21.png)
一个军团中的士兵数目.
In[6]:=
![Click for copyable input](assets.zh/mixed-radix-computations/In_25.png)
FromDigits[{1, 0, 0, 0, 0}, bases]
Out[6]=
![](assets.zh/mixed-radix-computations/O_22.png)
反之亦然,根据这些战术单位分解士兵数目.
In[7]:=
![Click for copyable input](assets.zh/mixed-radix-computations/In_26.png)
IntegerDigits[16894, bases]
Out[7]=
![](assets.zh/mixed-radix-computations/O_23.png)
In[8]:=
![Click for copyable input](assets.zh/mixed-radix-computations/In_27.png)
IntegerDigits[16894, bases];
Thread[units -> %]
Out[8]=
![](assets.zh/mixed-radix-computations/O_24.png)