Top.Mail.Ru
Ответы
Аватар пользователя
5 месяцев назад
от

Помогите с кодом для написания словаря

В общем нужно как то написать словарь в таком виде - Заглавная латинская буква, следом обычные 2 латинские буквы, потом спец. символ, следом 5 рандомных цифр
Если знаете утилиту какую нибудь подскажите

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
5мес
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
 //  В общем нужно как то написать словарь в таком виде: 
//  Заглавная латинская буква, следом обычные 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 ); 
    } 
}  

Программа генерирует последовательность строк вида

1234
 Aab^95810 
Aab^95811 
Aab^95812 
Aab^95813 

Для записи результата в файл можно использовать перенаправление стандартного вывода:

1
 ./target/debug/rust_dictgen > dict.txt 
Аватар пользователя
Гуру
5мес

Разберись сначала со своими мыслями. Приведи их в порядок.