[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1010596: ITP: golang-github-gitchander-permutation -- Simple permutation package for golang



Package: wnpp
Severity: wishlist
Owner: Robert Greener <rob@robgreener.com>

* Package name    : golang-github-gitchander-permutation
  Version         : 0.0~git20210517.a5d7372-1
  Upstream Author : Chander
* URL             : https://github.com/gitchander/permutation
* License         : Expat
  Programming Lang: Go
  Description     : Simple permutation package for golang

 permutation Simple permutation package for golang Install bash go get
 github.com/gitchander/permutation
 .
 Usagepermutations of int slice: ```go package main
 .
 import (
     "fmt"
 prmt "github.com/gitchander/permutation"
 .
 )
 .
 func main() {
     a := []int{1, 2, 3} p := prmt.New(prmt.IntSlice(a)) for p.Next() {
         fmt.Println(a)
     }
 }
 .
 result:
 .
 [1 2 3] [2 1 3] [3 1 2] [1 3 2] [2 3 1] [3 2 1] ``` permutations of
 string slice: ```go package main
 .
 import (
     "fmt"
 prmt "github.com/gitchander/permutation"
 .
 )
 .
 func main() {
     a := []string{"alpha", "beta", "gamma"} p :=
     prmt.New(prmt.StringSlice(a)) for p.Next() {
         fmt.Println(a)
     }
 }
 .
 result:
 .
 [alpha beta gamma] [beta alpha gamma] [gamma alpha beta] [alpha gamma
 beta] [beta gamma alpha] [gamma beta alpha] ``` permutation use of
 AnySlice: ```go a := []interface{}{-1, "control", 9.3}
 .
 data, err := prmt.NewAnySlice(a) if err != nil {
     log.Fatal(err)
 }
 .
 p := prmt.New(data) for p.Next() {
     fmt.Println(a)
 }
 .
 or use MustAnySlice (panic if error): go a := []int{1, 2} p :=
 prmt.New(prmt.MustAnySlice(a)) for p.Next() {
     fmt.Println(a)
 } ``` usage permutation.Interface ```go package main
 .
 import (
     "fmt"
 prmt "github.com/gitchander/permutation"
 .
 )
 .
 type Person struct {
     Name string Age  int
 }
 .
 type PersonSlice []Person
 .
 func (ps PersonSlice) Len() int      { return len(ps) } func (ps
 PersonSlice) Swap(i, j int) { ps[i], ps[j] = ps[j], ps[i] }
 .
 func main() {
     a := []Person{
         {Name: "one", Age: 1}, {Name: "two", Age: 2}, {Name: "three",
         Age: 3},
     } p := prmt.New(PersonSlice(a)) for p.Next() {
         fmt.Println(a)
     }
 }
 .
 result:
 .
 [{one 1} {two 2} {three 3}] [{two 2} {one 1} {three 3}] [{three 3} {one
 1} {two 2}] [{one 1} {three 3} {two 2}] [{two 2} {three 3} {one 1}]
 [{three 3} {two 2} {one 1}] ```


Reply to: