github.com/pavlo67/common@v0.5.3/common/mathlib/sets/slices.go (about) 1 package sets 2 3 func Multiple[T interface{}](data [][]T) (dataMultipled [][]T) { 4 5 for _, optionsSet := range data { 6 var optionsMultipledNew [][]T 7 8 for _, optionValue := range optionsSet { 9 if len(dataMultipled) < 1 { 10 optionsMultipledNew = append(optionsMultipledNew, []T{optionValue}) 11 } else { 12 for _, opts := range dataMultipled { 13 optionsMultipledNew = append(optionsMultipledNew, append(opts, optionValue)) 14 } 15 } 16 } 17 18 dataMultipled = optionsMultipledNew 19 } 20 21 return dataMultipled 22 } 23 24 //func CyclicSignature(data []string) string { 25 // if len(data) < 1 { 26 // return "" 27 // } 28 // 29 // var sign string 30 // for i := range data { 31 // var signOption string 32 // for j := range data { 33 // signOption += "_" + data[(i+j)%len(data)] 34 // } 35 // if i == 0 || signOption < sign { 36 // sign = signOption 37 // } 38 // } 39 // 40 // return sign[1:] 41 //} 42 43 func Intersects[T comparable](set0, set1 []T) bool { 44 45 for _, v0 := range set0 { 46 for _, v1 := range set1 { 47 if v0 == v1 { 48 return true 49 } 50 } 51 } 52 53 return false 54 }