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

ints = {1, 1, 5, 8};
ops = {Plus, Subtract, Times, Divide};
これら4つの整数と指定された二項演算を使うと,3840通りの組合せが可能である.
In[2]:=

Length[combs = Groupings[Permutations[ints], ops -> 2, HoldForm]]
Out[2]=

以下にその例を挙げる.
In[3]:=

RandomSample[combs, 10]
Out[3]=

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

results = Quiet@ReleaseHold[combs];
以下が10を得る唯一の組合せである.
In[5]:=

Cases[Thread[Equal[combs, results]], _ == 10]
Out[5]=

最もよくある結果は13で,240通りで生成される.
In[6]:=

TakeLargestBy[Tally[results], Last, 5]
Out[6]=
