वास्तव में यह सुनिश्चित नहीं है कि यह आपके प्रश्न का उत्तर देता है लेकिन यह नीचे दिए गए आउटपुट को खोजने के लिए एक सरल पुनरावर्ती कार्यान्वयन है।
package main
import "fmt"
func main() {
values := [][]int{}
// These are the first two rows.
row1 := []int{1, 2, 3}
row2 := []int{4, 5, 6}
row3 := []int{7, 8, 9}
// Append each row to the two-dimensional slice.
values = append(values, row1)
values = append(values, row2)
values = append(values, row3)
fmt.Println(getPermutation(values))
}
func getPermutation(vids [][]int) [][]int {
toRet := [][]int{}
if len(vids) == 0 {
return toRet
}
if len(vids) == 1 {
for _, vid := range vids[0] {
toRet = append(toRet, []int{vid})
}
return toRet
}
t := getPermutation(vids[1:])
for _, vid := range vids[0] {
for _, perm := range t {
toRetAdd := append([]int{vid}, perm...)
toRet = append(toRet, toRetAdd)
}
}
return toRet
}
https://play.golang.org/p/f8wktrxkU0
ऊपर टुकड़ा के आउटपुट:
[[1 4 7] [1 4 8] [1 4 9] [1 5 7] [1 5 8] [1 5 9] [1 6 7] [1 6 8] [1 6 9] [2 4 7] [2 4 8] [2 4 9] [2 5 7] [2 5 8] [2 5 9] [2 6 7] [2 6 8] [2 6 9] [3 4 7] [3 4 8] [3 4 9] [3 5 7] [3 5 8] [3 5 9] [3 6 7] [3 6 8] [3 6 9]]
'itertools.product' आप कुछ सेट की कार्तीय उत्पाद देता है। यह * आपको * क्रमपरिवर्तन नहीं देता है। यद्यपि आप क्रमपरिवर्तनों को समझने के लिए कार्टेशियन उत्पादों का उपयोग कर सकते हैं, यह बेहद अक्षम होगा। http://docs.python.org/2/library/itertools.html#itertools.product – scvalex
मैं मूर्ख हूं। मैं हमेशा उन मिश्रित हो जाता हूं, और मुझे कार्टेशियन उत्पादों के लिए एक पैकेज मिला। धन्यवाद – Colum
@ कोलम आपने गलती की; जो आपको मूर्ख नहीं बनाता है। –