Dar*_*ght 1 algorithm combinations function
创建给定字符集C的函数,可以生成第N个组合或返回给定起始位置(Ns)和结束位置(Ne)以及组合的最大长度(Mx)的组合系列.
一个具体的例子:
设C = [A,B,C]
我们知道不同的组合看起来如下,假设Mx = 3 (不同长度的组合会有所不同):
1. AAA
2. AAB
3. AAC
4. ABA
5. ABB
6. ABC
N. ... Etc
Run Code Online (Sandbox Code Playgroud)
如果我们要传递以下参数:
C = [A,B,C] Mx = 3 Ns = 3 Ne = 3
我们期望得到以下结果:
AAC
Run Code Online (Sandbox Code Playgroud)
如果我们要传递以下参数:
C = [A,B,C] Mx = 3 Ns = 4 Ne = 6
我们期望得到以下结果:
4. ABA
5. ABB
6. ABC
Run Code Online (Sandbox Code Playgroud)
对于解决方案,编程语言不相关.但是C#是首选.最重要的是解释它是如何解决的.
我期待Stack Overflow的惊人大师......
给定n个符号组合序列的索引N(从0开始),您可以通过计算N/n i%n(使用整数除法和余数)得到第i个符号
例如:
C = {A, B, C} (giving n = 3)
N = 6
i = 0 => 6 / 3^0 % 3 = 0 (symbol 0 = A)
i = 1 => 6 / 3^1 % 3 = 2 (symbol 2 = C)
i = 2 => 6 / 3^2 % 3 = 0 (symbol 0 = A)
Resulting sequence: ACA
Run Code Online (Sandbox Code Playgroud)
该序列被视为一个碱基Ñ号码,并且各个数字被计算.