public Syllable(string value, string transliteration, SyllabaryType syllabaryType) { Value = value; Transliteration = transliteration; SyllabaryType = syllabaryType; IsActive = true; }
public static (string, string) GeneratePracticeTextWithHint(Dictionary <SyllabaryParts, bool> selectedParts, SyllabaryType selectedType) { // source data stuff var selectedSyllabels = new List <KeyValuePair <string, string> >(); var selectedSyllabary = new Dictionary <SyllabaryParts, Dictionary <string, string> >(); switch (selectedType) { case SyllabaryType.Hiragana: selectedSyllabary = Hiragana.Syllables; break; case SyllabaryType.Katakana: selectedSyllabary = Katakana.Syllables; break; } selectedSyllabels = selectedSyllabary .Where(entry => selectedParts.GetValueOrDefault(entry.Key)) .SelectMany(partEntry => partEntry.Value) .ToList(); if (selectedSyllabels.Count() == 0) { return(String.Empty, String.Empty); } // generated stuff StringBuilder output = new StringBuilder(); StringBuilder hint = new StringBuilder(); Random rnd = new Random((int)DateTime.Now.Ticks); var maxSyllabsInWord = 4; var syllabsInWord = 0; for (int i = 0; i < 256; i++) { var sylab = selectedSyllabels.ElementAt(rnd.Next(0, selectedSyllabels.Count() - 1)); output.Append(sylab.Key); hint.Append(sylab.Value); syllabsInWord++; if (rnd.Next(0, 4) % 4 == 0 || syllabsInWord >= maxSyllabsInWord) { output.Append(' '); hint.Append(" "); syllabsInWord = 0; } } return(output.ToString(), hint.ToString()); }