我正在试图找到一种方法,从K
个字母的列表中生成所有可能的长度为N
的"模式".我看过类似的问题,但他们似乎都在问组合、排列等,这正是我想要的.
例如,let K = 3
和N = 2
.也就是说,我想要所有可以用字母[A,B,C]构成的两个字母的"图案".AA就是这样一种模式.AB是另一个.只有这两个.BB和CC与AA相同,只是"一个字母,然后是同一个字母."类似地,BA、BC、AC等与AB相同,只是"一个字母,然后是另一个字母."所以对于这个简单的例子,只有两种模式,事实上这说明了为什么K必须小于或等于N(添加额外的字母来 Select 不会改变任何东西).
如果相反,K=3,N=3,那么五种可能的模式将是AAA、AAB、ABA、ABB和ABC.每三个字母的其他排列都有一个与这五个字母中的一个相同的模式.
如果K=2,N=3,则只有四种可能的模式:AAA、AAB、ABA、ABB.(ABC不再是有效的 Select ,因为我只有两个字母可供 Select .)
当然,这些示例手工操作很简单——我正在try 创建代码,为N和K的较大值生成所有可能的模式.这可能更像是一个纯粹的数学问题,但最终我需要一个Python函数来生成这些,所以我想我首先try 一下,看看是否有人知道或能够想出一种有效的方法来实现这一点.