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 com­mon tasks is a collection of handy code examples.