Generate all permutations
yourbasic.org/golang

// Perm calls f with each permutation of a. func Perm(a []rune, f func([]rune)) { perm(a, f, 0) } // Permute the values at index i to len(a)-1. func perm(a []rune, f func([]rune), i int) { if i > len(a) { f(a) return } perm(a, f, i+1) for j := i + 1; j < len(a); j++ { a[i], a[j] = a[j], a[i] perm(a, f, i+1) a[i], a[j] = a[j], a[i] } }
Example usage:
Perm([]rune("abc"), func(a []rune) { fmt.Println(string(a)) })
Output:
abc acb bac bca cba cab
More code examples
Go blueprints: code for common tasks is a collection of handy code examples.