您好我正在使用Mathematica 4.0。我试图找到所有的排列,例如,说有两个数字0和amp; 1.我试图在3个(比如说)重复的位置使用这两个数字生成所有排列,例如{1,1,1},{1,1,0},{1,0,1},{1, 0,0} ...而且我试图将每个排列放在一个数组中。在Mathematica 4.0中是否有任何代码或命令可用于执行所有这些操作。请帮我完成这项任务......
答案 0 :(得分:1)
在Mathematica 5.1及更高版本中,有一个函数Tuples
可以满足您的需求。你可以尝试
getTuples[elements_List, length_Integer] :=
Flatten[Outer[List, Sequence @@ Table[elements, {length}]], length - 1]
例如:
In[6]:= getTuples[{0, 1}, 3]
Out[6]= {{0, 0, 0}, {0, 0, 1}, {0, 1, 0}, {0, 1, 1}, {1, 0, 0}, {1, 0, 1}, {1, 1, 0}, {1, 1, 1}}
但我不知道这是否适用于M4.0。应该,我猜,但我无法检查。一般来说,你会遇到各种各样的困难,如4.0这样的过时版本,包括缺乏功能,性能和界面(前端),在以后的版本中修复的某些错误,与以后编写的代码不兼容版本,并获得帮助。对于Mathematica来说尤其如此,因为自4.0以来引入了各种方向的巨大进步。所以,如果你打算经常使用它,我强烈建议升级。
答案 1 :(得分:0)
一种考古问题:D。版本4已经很老了!
<<DiscreteMath`Combinatorica`
perm1[l_,n_]:=Union[KSubsets[Flatten[Table[l,{n}]],n]]
In[70]:= perm1[{1,2,1},4]
Out[70]= {{1,1,1,1},{1,1,1,2},{1,1,2,1},{1,1,2,2},{1,2,1,1},
{1,2,1,2},{1,2,2,1},{1,2,2,2},{2,1,1,1},{2,1,1,2},
{2,1,2,1},{2,1,2,2},{2,2,1,1},{2,2,1,2},{2,2,2,1},{2,2,2,2}}
In[73]:= perm1[{1,0},3]
Out[73]= {{0,0,0},{0,0,1},{0,1,0},{0,1,1},{1,0,0},{1,0,1},{1,1,0},{1,1,1}}
答案 2 :(得分:0)
请稍等一下 - 请注意,所有以前版本的Mathematica的文档都可以在http://reference.wolfram.com/legacy在线免费获取 - 特别是版本4,请参阅http://reference.wolfram.com/legacy/v4。
您可以通过google搜索v4文档:
排列网站:reference.wolfram.com/legacy/v4
会打开v4函数Permutations http://reference.wolfram.com/legacy/v4/RefGuide/Permutations.html,其中包含示例和一些指向旧Mathematica Book其他部分的链接。