Generowanie kodu kuponu

Chciałbym wygenerować kody kuponów, np.AYB4ZZ2. Chciałbym jednak również móc oznaczyć używane kupony i ograniczyć ich globalną liczbę, powiedzmyN. Naiwne podejście byłoby czymś w rodzaju"GenerowaćN unikalne kody alfanumeryczne, umieść je w bazie danych i wykonaj wyszukiwanie db przy każdej operacji kuponu. ”

Jednak, o ile sobie uświadamiam, możemy równieżspróbuj znaleźć funkcję MakeCoupon(n), który konwertuje podaną liczbę na ciąg przypominający kupon o określonej długości.

Z tego co rozumiemMakeCoupon powinien spełnić następujące wymagania:

Bądź bijective. Jest odwrotnieMakeNumber(coupon) powinny być skutecznie obliczalne.

Wyjście dlaMakeCoupon(n) powinny być alfanumeryczne i powinny być małe istały długość - aby można było ją nazwaćczytelny dla człowieka. Na przykład.SHA1 trawienie nie spełniłoby tego wymogu.

Praktyczna wyjątkowość. WynikiMakeCoupon(n) dla każdego naturalnegon <= N powinien być całkowicie unikalny lub niepowtarzalny na takich samych warunkach, jak na przykładMD5 jest unikalny (przy tym samym bardzo małym prawdopodobieństwie kolizji).

(ten jest trudny do zdefiniowania) Nie powinno być oczywiste, jak wyliczyć wszystkie pozostałe kupony z kodu pojedynczego kuponu - powiedzmyMakeCoupon(n) iMakeCoupon(n + 1) powinny się różnić wizualnie.

Na przykład.MakeCoupon(n), co po prostu generujen wypełnione zerami nie spełniłoby tego wymogu, ponieważ000001 i000002 właściwie nie różnią się „wizualnie”.

P:

Czy istnieje jakaś funkcja lub generator funkcji, który spełnia następujące wymagania? Moje próby wyszukiwania prowadzą mnie tylko do[CPAN] Kod kuponu, ale nie spełnia wymogu, że odpowiednia funkcja jest bijective.

questionAnswers(5)

yourAnswerToTheQuestion