commit - 3889536a56748500b2332aea768ae954dfd48132
commit + 2ccc3f8af5b945e04a06b3511e014e537230f745
blob - ab0e1ae82f9fa54cf0b6370143f21209339e92e2
blob + 6fb9ea8233f44c549ae5a951b6d5752010f560ce
--- permutation.go
+++ permutation.go
+/*
+Package permutation implements Heap's algorithm for generating permutations of
+lists. It uses Go 1.18's new generics feature to provide a generic interface
+*/
package permutation
+// GenSlice is a generic slice of data
type GenSlice[T any] []T
+/*
+Permutations uses Heap's Algorithm to generate a list of all possible
+permutations of the provided list. Most slices will automatically coerce
+their type into a GenSlice[T] with no casting required
+*/
func Permutations[T any](arr GenSlice[T]) []GenSlice[T] {
var helper func(GenSlice[T], int)
var res []GenSlice[T]