混合基底計算
MixedRadixを使うと,各桁の数字の基底が異なる数値系を扱うことができる.
次は古代ローマ軍のいくつかの兵士隊の名称である.
In[1]:=
units = {"legion", "cohort", "century", "contubernia", "soldier"};
legion(軍団)は10のcohort(歩兵隊)から,cohortは6のcentury(百人隊)から,centuryは10のcontubernia(分隊)から,contuberniaは8人の兵士から構成されていた.
In[2]:=
bases = MixedRadix[{10, 6, 10, 8}];
この数値系における,1つのcontuberniaに含まれる兵士数.
In[3]:=
FromDigits[{1, 0}, bases]
Out[3]=
この数値系における,1つのcenturyに含まれる兵士数.
In[4]:=
FromDigits[{1, 0, 0}, bases]
Out[4]=
この数値系における,1つのcohortに含まれる兵士数.
In[5]:=
FromDigits[{1, 0, 0, 0}, bases]
Out[5]=
この数値系における,1つのlegionに含まれる兵士数.
In[6]:=
FromDigits[{1, 0, 0, 0, 0}, bases]
Out[6]=
逆に,兵士数をこれらの戦略部隊に分割する.
In[7]:=
IntegerDigits[16894, bases]
Out[7]=
In[8]:=
IntegerDigits[16894, bases];
Thread[units -> %]
Out[8]=