Wolfram言語

代数と整数論

数の分解を解く

新関数のGroupingsは,あるオブジェクトと操作を組み合せるすべての可能な結果を生成するパワフルな方法を提供する.特にフランスのテレビ番組「Des chiffres et des lettres」で使われる数のゲームや,ソーシャルネットワークで最近人気の高かった計算問題を解くのに非常に便利である.

整数1,1,5,8と4つの基本演算操作を使って10を得る方法を決定する.

In[1]:=
Click for copyable input
ints = {1, 1, 5, 8}; ops = {Plus, Subtract, Times, Divide};

これら4つの整数と指定された二項演算を使うと,3840通りの組合せが可能である.

In[2]:=
Click for copyable input
Length[combs = Groupings[Permutations[ints], ops -> 2, HoldForm]]
Out[2]=

以下にその例を挙げる.

In[3]:=
Click for copyable input
RandomSample[combs, 10]
Out[3]=

それぞれの組合せの結果を計算する.組合せの多くには0による割り算が含まれている.

In[4]:=
Click for copyable input
results = Quiet@ReleaseHold[combs];

以下が10を得る唯一の組合せである.

In[5]:=
Click for copyable input
Cases[Thread[Equal[combs, results]], _ == 10]
Out[5]=

最もよくある結果は13で,240通りで生成される.

In[6]:=
Click for copyable input
TakeLargestBy[Tally[results], Last, 5]
Out[6]=

関連する例

de en es fr ko pt-br ru zh