Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Никита Агаев Ученик (90), открыт 3 дня назад
В общем нужно как то написать словарь в таком виде - Заглавная латинская буква, следом обычные 2 латинские буквы, потом спец. символ, следом 5 рандомных цифр
Если знаете утилиту какую нибудь подскажите
2 ответа
Граф Таранов Гуру (3401) 3 дня назад
Разберись сначала со своими мыслями. Приведи их в порядок.
D P Мудрец (18090) 3 дня назад
 //  В общем нужно как то написать словарь в таком виде: 
// Заглавная латинская буква, следом обычные 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 
Похожие вопросы