Wolfram mathematica Mathematica,字母表生成

Wolfram mathematica Mathematica,字母表生成,wolfram-mathematica,Wolfram Mathematica,如果我有一个字母表,让我们说sigma={1,2,3,4,a,b,c,d,e,f,g}并且想要生成所有长度为n的单词,有办法吗 我可以做Flatten[Outer[函数[{x,y},{x,y}],sigma,sigma],1]来处理字长=2的问题,但它不能处理更多的字母。 排列不起作用,因为它不包括双精度排列。 置换[sigma,{2}] 没有给出{a,a}的例子 有没有一个简单的方法来实现这一点,或者我必须为它编写一个函数 这对于n=2是正确的(但我想要任意n): 虽然元组肯定是更好的方法,但

如果我有一个字母表,让我们说sigma={1,2,3,4,a,b,c,d,e,f,g}并且想要生成所有长度为n的单词,有办法吗

我可以做
Flatten[Outer[函数[{x,y},{x,y}],sigma,sigma],1]
来处理字长=2的问题,但它不能处理更多的字母。 排列不起作用,因为它不包括双精度排列。
置换[sigma,{2}]
没有给出{a,a}的例子

有没有一个简单的方法来实现这一点,或者我必须为它编写一个函数

这对于n=2是正确的(但我想要任意n):


虽然
元组
肯定是更好的方法,但我认为向您展示一种方法,使您现有的方法适用于任意
n
值是很有价值的

Flatten[Outer[List, ##], n - 1] & @@ ConstantArray[sigma, n]
这是通过创建
n
sigma
实例,并将它们排序(
##
)到
外部
<代码>展平用于删除除最后一级括号外的所有括号

请注意,您的
函数[{x,y},{x,y}]
可以简单地替换为
列表

假设字母表本身不包含列表,您也可以使用
分发
功能进行此操作

Distribute[ConstantArray[sigma, n], List]

当有人问一个用Mathematica中的一个函数就能解决的问题时,我总是微笑。
Distribute[ConstantArray[sigma, n], List]