Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menjana Semua Kata Laluan Aksara N yang Mungkin dalam Go?

Bagaimanakah Saya Boleh Menjana Semua Kata Laluan Aksara N yang Mungkin dalam Go?

Susan Sarandon
Lepaskan: 2024-11-26 02:55:10
asal
578 orang telah melayarinya

How Can I Generate All Possible N-Character Passwords in Go?

Menjana Semua Kemungkinan Kata Laluan Aksara N dalam Go

Dalam Python, seseorang boleh menggunakan fungsi itertools.product() untuk menjana semua kemungkinan kata laluan dengan panjang tetap. Contohnya, untuk mencipta kata laluan 2 aksara menggunakan aksara A-E, seseorang boleh menggunakan:

from itertools import product
for permutation in product('ABCDE', repeat=2):
    print(permutation)
Salin selepas log masuk

Walau bagaimanapun, dalam Go, tugas menjana kata laluan boleh dicapai melalui pendekatan yang berbeza:

Operasi yang diingini pada asasnya ialah produk Cartesian n-ary bagi satu set dengan dirinya sendiri. Sebagai contoh, untuk mencipta semua kata laluan 3 aksara, kita memerlukan Prod(set,set,set). Ini boleh dibina secara berulang.

Pada mulanya, kami mencipta produk n-1 kami, kemudian untuk setiap produk dan setiap elemen set asal, kami menambahkan elemen itu. Mari kita tunjukkan dengan penjanaan kata laluan 2 aksara hingga 3 aksara:

"ab" = {a,b} -> {(a,a),(a,b),(b,a),(b,b)} -> {(a,a,a),(a,a,b),(a,b,a),(a,b,b),(b,a,a),(b,a,b),( b,b,a),(b,b,b)}

Dalam Go, kita boleh melaksanakan ini sebagai:

func NAryProduct(input string, n int) []string {
    if n <= 0 {
        return nil
    }

    prod := make([]string, len(input))
    for i, char := range input {
        prod[i] = string(char)
    }

    for i := 1; i < n; i++ {
        next := make([]string, 0, len(input)*len(prod))
        for _, word := range prod {
            for _, char := range input {
                next = append(next, word+string(char))
            }
        }
        prod = next
    }

    return prod
}
Salin selepas log masuk

Penyelesaian ini boleh dioptimumkan lagi dengan memanfaatkan penilaian malas, mengurangkan ingatan penggunaan. Berikut ialah pautan taman permainan untuk rujukan: http://play.golang.org/p/6LhApeJ1bv

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Semua Kata Laluan Aksara N yang Mungkin dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan