Как и все разработчики, мы постоянно имеем дело с какими-то идентификаторами как часть нашей повседневной работы. В большинстве случаев речь идет об ошибках или билетах поддержки. Наше программное обеспечение, обнаружив ошибку, создает пакет с именем, отформатированным из отметки времени и номера версии, что является дешевым способом создания достаточно уникальных идентификаторов, чтобы избежать путаницы в пакетах. Пример: « Отчет об ошибке 20101214 174856 6.4b2 ».
Мой мозг просто не очень хорошо запоминает цифры. Я хотел бы иметь простой способ генерации буквенно-цифровых идентификаторов, которые легко запомнить .
Требуется около 5 минут, чтобы запустить алгоритм наподобие следующего в python, который дает наполовину полезные результаты:
import random
vowels = 'aeiuy' # 0 is confusing
consonants = 'bcdfghjklmnpqrstvwxz'
numbers = '0123456789'
random.seed()
for i in range(30):
chars = list()
chars.append(random.choice(consonants))
chars.append(random.choice(vowels))
chars.append(random.choice(consonants + numbers))
chars.append(random.choice(vowels))
chars.append(random.choice(vowels))
chars.append(random.choice(consonants))
print ''.join(chars)
Результаты выглядят так:
re1ean
meseux
le1ayl
kuteef
neluaq
tyliyd
ki5ias
Это уже довольно хорошо, но я чувствую, что все еще легко забыть, как именно они написаны, так что если вы подойдете к столу коллеги и захотите посмотреть один из них, у вас все еще есть трудности.
Я знаю алгоритмы, которые выполняют анализ триграмм над текстом (скажем, вы кормите их целой книгой на немецком языке) и которые могут генерировать строки, которые выглядят и чувствуются как немецкие слова и, таким образом, легче обрабатывать в целом. Это требует большого количества данных и делает его несколько менее подходящим для встраивания в приложение только для этой цели.
Вам известны какие-либо опубликованные алгоритмы, решающие эту проблему?
Спасибо!
Карл