// В общем нужно как то написать словарь в таком виде:
// Заглавная латинская буква, следом обычные 2 латинские буквы,
// потом спец. символ, следом 5 рандомных цифр
static FIRST_CH: &str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
static NEXT_CH: &str = "abcdefghijklmnopqrstuvwxyz";
// Добавить спецсиволы по желанию...
static SPEC_CH: &str = ".!#$%^&_";
static DIGIT_CH: &str = "0123456789";
// От этого параметра зависит максимальный размер генерируемых строк
const MAX_DEEP: usize = 8;
fn next_ch( src_s: String, deep: usize, max_deep: usize )
{
match deep
{
0 =>
{
for ch in NEXT_CH.chars()
{
let mut s = src_s.clone();
s.push(ch);
next_ch( s, 1, max_deep );
}
},
1 =>
{
for ch in NEXT_CH.chars()
{
let mut s = src_s.clone();
s.push(ch);
next_ch( s, 2, max_deep );
}
},
2 =>
{
for ch in SPEC_CH.chars()
{
let mut s = src_s.clone();
s.push(ch);
next_ch( s, 3, max_deep );
}
},
_ =>
{
if deep < max_deep
{
for ch in DIGIT_CH.chars()
{
let mut s = src_s.clone();
s.push(ch);
next_ch( s, deep+1, max_deep );
}
}
else
{
println!("{}", src_s);
}
}
}
}
// Точка входа
fn main()
{
for ch in FIRST_CH.chars()
{
// Породим новую строку из заглавной буквы и закинем ее в генератор
// следующих букв с глубиной 0
let s = String::from(ch);
next_ch( s, 0, MAX_DEEP );
}
}
Программа генерирует последовательность строк вида
Aab^95810
Aab^95811
Aab^95812
Aab^95813
Для записи результата в файл можно использовать перенаправление стандартного вывода:
./target/debug/rust_dictgen > dict.txt
Если знаете утилиту какую нибудь подскажите