Go语言实践Go

Golang 数组穷举所有组合(不交叉顺序)

2019-10-30  本文已影响0人  承诺一时的华丽

[1]
[2]
[3]
[1,2]
[2,3]
[1,3]
[1,2,3]

func getArrayExhaustivity(arr []string) (result [][]string) {
    var l = int(math.Pow(float64(2), float64(len(arr))) - 1)
    var t []string
    for i := 1; i <= l; i++ {
        s := i
        t = []string{}
        for k := 0; s > 0; k++ {
            if s&1 == 1 {
                t = append(t, arr[k])
            }
            s >>= 1
        }
        result = append(result, t)
    }
    return
}
func TestArrayExhaustivity(t *testing.T) {  
    result := getArrayExhaustivity([]string{"1", "2", "3"})
    str, err := json.Marshal(result)
    if err != nil {
        t.Fatal(err)
    }
    println(string(str))
}
=== RUN   TestArrayExhaustivity
[["1"],["2"],["1","2"],["3"],["1","3"],["2","3"],["1","2","3"]]
--- PASS: TestArrayExhaustivity (0.00s)
PASS

Process finished with exit code 0
func TestArrayExhaustivity(t *testing.T) {
    result := getArrayExhaustivity([]string{"1", "2", "3", "4"})
    str, err := json.Marshal(result)
    if err != nil {
        t.Fatal(err)
    }
    println(string(str))
}
=== RUN   TestArrayExhaustivity
[["1"],["2"],["1","2"],["3"],["1","3"],["2","3"],["1","2","3"],["4"],["1","4"],["2","4"],["1","2","4"],["3","4"],["1","3","4"],["2","3","4"],["1","2","3","4"]]
--- PASS: TestArrayExhaustivity (0.00s)
PASS

Process finished with exit code 0
func arrayLenSort(result [][]string) [][]string {
    for i := 0; i < len(result); i++ {
        for j := i + 1; j < len(result); j++ {
            if len(result[i]) < len(result[j]) {
                tmp := result[i]
                result[i] = result[j]
                result[j] = tmp
            }
        }
    }
    return result
}
func TestArrayExhaustivitySort(t *testing.T) {
    result := getArrayExhaustivity([]string{"1", "2", "3", "4"})
    result = arrayLenSort(result)
    str, err := json.Marshal(result)
    if err != nil {
        t.Fatal(err)
    }
    println(string(str))
}
=== RUN   TestArrayExhaustivitySort
[["1","2","3","4"],["1","2","4"],["1","3","4"],["2","3","4"],["1","2","3"],["2","4"],["1","3"],["3","4"],["2","3"],["1","2"],["1","4"],["4"],["2"],["1"],["3"]]
--- PASS: TestArrayExhaustivity (0.00s)
PASS

Process finished with exit code 0
上一篇 下一篇

猜你喜欢

热点阅读