魔方分割数
Posted feedbacks - Mathematica
グループ未定の数字の最初のものpは、まだ決まってないグループ(X)に。 Xの残りの(n-1)個は、残っている数字から、和が(s/n-p)になるものとする。 最後まで行ったらカウンタに1加算。 初めに戻る。 (ComplementやSubsetsは常にソートされている) In[3]:= f[3] Out[3]= 2 In[4]:= f[4] Out[4]= 392(Core2 6700で0.06秒) In[5]:= f[5] Out[5]= 3245664(Core2 6700で690秒)
1 2 3 4 5 6 | f[n_] := f[Range[n^2], n, Total@Range[n^2]/n]
f[in_, n_, s_] :=
If[Length@in == n, 1,
Total[f[Complement[Rest@in, #], n, s] & /@ (
Select[Subsets[Rest@in, {n - 1}], First@in + Total@# == s &])]]
|


xsd
#4702()
Rating8/8=1.00
たとえば、N=3のときは、
(1) { 1, 5, 9 }, { 2, 6, 7 }, { 3, 4, 8 }
(2) { 1, 6, 8 }, { 2, 4, 9 }, { 3, 5, 7 }
の2通りの方法があります。
ここで指定されたNに対して、何通りのグループ分けの方法があるかを数えるプログラムを作ってください。
(何通りかという値だけが出力されればよいのですが、予め計算してある結果を返すのはダメですよ。)
また、N=5を指定したときの実行時間もあわせて教えてください。
なお、数え上げるときの注意として、
・{ 1, 5, 9 } と { 1, 9, 5 }は同じもの
・{ 1, 5, 9 }, { 2, 6, 7 }, { 3, 4, 8 }と
{ 1, 5, 9 }, { 3, 4, 8 }, { 2, 6, 7 }は同じもの
とすることに注意してください。
[ reply ]