做[remove=k+1;add=k;
(*给定n和m,列出所有可能的赋值。*)
alltuples[n,m_]:=整数分区[m+n,{n}]-1;
(*给定一个赋值,在一次移动后列出所有结果赋值;仅在n>=3时工作。*)
pebbloves[config_]:=块[{n,temp},
n=长度[config];
temp=表[config,{i,n(n-1)}]+
排列[Join[{-remove,add},Table[0,{i,n-2}]];
temp=选择[temp,Min[#]>=0&];
temp=反向排序[DeleteDuplicates[ReverseSort/@temp]];
(*给定n和m,列出所有属于P-games的作业。*)
Plist={};
plist[n_,m_]:=块[{索引,元组},
当[Length[Plinst]<n时,index=Length[Plinst];
AppendTo[Plist,{{Join〔{1},Table〔0,{i,index}〕}}〕];
Do[AppendTo[Plist[[n]],{}];tuples=所有tuples[n,i];
Do[If[Not[IntersectingQ[pebbloves[tuples[[j]]],
如果[i>(remove-add),Plist[[n,i-(remove-add)]],{}]],
AppendTo[Plist[[n,i]],元组[[j]]],{j,长度[tuples]}],
{i,长度[Plist[[n]]+1,m}];褶皱[[n,m]]];
做[m=1;而[plist[n,m]!={},m++];打印[“k=”,k,“m=”,m],{n,5,5}],
{k,1,21}]
|