Golang用于循环排列

时间:2016-05-02 00:54:52

标签: go combinations permutation

我现在已经困惑了大约5个小时了。我对Golang非常陌生(2天)......

我正在寻找一个for循环,它将使用特定字符创建给定大小的字符串的所有排列。不仅如此,还需要将其拆分为特定的块大小。我会尝试直观地向您展示我需要的东西..

chars          := "abcdefghij"
string_size    := 6
blocks         := 5
start_position := 2

所以这个例子的可能性是10到6的幂......所以1,000,000 ..

我需要的是这个,例如1,000,000被分成上面提到的5个区块,因此每个循环有200,000个猜测。

因此,指定开始位置可以说比较

sections_usable := len(chars) / blocks
// sections_usable == 5
// this would then cherry pick 5 sections 
sections := make([]rune, blocks)
base_count := 0
for i := 0; i < blocks * sections_usable; i = i + sections_usable  {  
     sections[base_count] = rune(r[i])
     base_count++
}
for i, xi := range x {

    if i == 0 {

        // This is where its selecting the starting character
        // From the sections 
        p[i] = sections[block_to_use]

    } else {
        p[i] = r[xi]
    }

}

下面是我想要返回的数据的示例 使用

chars          := "abcdefghij"
string_size    := 6
blocks         := 5
start_position := 2

所以开始位置0将是“a”,1将是“c”,2将是“e”

所以使用0

AAAAAA

AAAAAB

aaaaac

aaaaad

...

abbbbb

abbbbc

abbbbd

...

acdddd

acddde

acdddf

现在使用开始位置2

eaaaaa

eaaaab

eaaaac

...

依此类推,但排列必须在它开始下一个块之前停止,即

ejjjjj

0 个答案:

没有答案