// 12. hét – Permutációk visszalépéses kereséssel
// Futtatás: go run ./h12/permutations
package main

import "fmt"

func permute(prefix []rune, used []bool, items []rune, out *[]string) {
	if len(prefix) == len(items) {
		*out = append(*out, string(prefix))
		return
	}
	for i, c := range items {
		if used[i] {
			continue
		}
		used[i] = true
		permute(append(prefix, c), used, items, out)
		used[i] = false // visszalépés
	}
}

func main() {
	var out []string
	permute(nil, make([]bool, 3), []rune("ABC"), &out)
	fmt.Println("ABC permutációi:", out, "(3! =", len(out), ")")
	out = nil
	permute(nil, make([]bool, 5), []rune("ABCDE"), &out)
	fmt.Println("ABCDE permutációinak száma:", len(out))
}
