gba-3のメモ

てきとー

Go言語で順列を実装

permute.go

package main

func Permute(nums []int) [][]int {
    ans := calc(nums)
    return ans
}

func calc(nums []int) [][]int {
    if len(nums) == 0 {
        return [][]int{}
    }
    var ans [][]int
    for i := range nums {
        arr := []int{}
        for j := range nums {
            if i != j {
                arr = append(arr, nums[j])
            }
        }
        childs := calc(arr)
        if len(childs) == 0 {
            ans = append(ans, []int{nums[i]})
            return ans
        }
        for _, child := range childs {
            pattern := append([]int{nums[i]}, child...)
            ans = append(ans, pattern)
        }
    }
    return ans
}

main.go

package main

import (
    "fmt"
)

func main() {
    nums := []int{1, 2, 3}
    for _, v := range Permute(nums) {
        fmt.Println(v)
    }
}

実行結果

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