使用mathematica 4.0生成排列

时间:2011-01-30 18:39:19

标签: wolfram-mathematica

您好我正在使用Mathematica 4.0。我试图找到所有的排列,例如,说有两个数字0和amp; 1.我试图在3个(比如说)重复的位置使用这两个数字生成所有排列,例如{1,1,1},{1,1,0},{1,0,1},{1, 0,0} ...而且我试图将每个排列放在一个数组中。在Mathematica 4.0中是否有任何代码或命令可用于执行所有这些操作。请帮我完成这项任务......

3 个答案:

答案 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其他部分的链接。