Необходимо ускорить код. Цикл в цикле это медленно. Думаю можно как-то записать тоже самое без вложенного цикла.
package main
import "log"
func main() {
t := 0
k := 2
l := 4
s := 16
idx := make([]int, k)
for t < s {
log.Println(idx)
for j := k-1; j >= 0; j--{
if idx[j] >= l-1 {
idx[j] = 0
}else{
idx[j]++
break
}
}
t++;
}
}
Данный код выводит:
[0 0]
[0 1]
[0 2]
[0 3]
[1 0]
[1 1]
[1 2]
[1 3]
[2 0]
[2 1]
[2 2]
[2 3]
[3 0]
[3 1]
[3 2]
[3 3]
.
Этот код является частью алгоритма генерации размещений с повторениями. Может есть реализация куда быстрее полного перебора?