private bool CheckerForEnglish(char[] valueSplit)
        {
            var massiveEnglish = new MassiveChars("English").GetMassiveChars();
            var flag           = true;

            for (int i = 0; i < valueSplit.Count(); i++)
            {
                if (!massiveEnglish.Contains(valueSplit[i]) && valueSplit[i] != ' ')
                {
                    flag = false;
                }
            }
            return(flag);
        }
        private bool CheckerForEnglishAndRussian(char[] firstValueSplit, char[] secondValueSplit)
        {
            var massiveRussian = new MassiveChars("Russian").GetMassiveChars();
            var massiveEnglish = new MassiveChars("English").GetMassiveChars();
            var flag           = true;

            for (int i = 0; i < firstValueSplit.Count(); i++)
            {
                if (!massiveEnglish.Contains(firstValueSplit[i]) && firstValueSplit[i] != ' ')
                {
                    flag = false;
                }
            }
            for (int i = 0; i < secondValueSplit.Count(); i++)
            {
                if (!massiveRussian.Contains(secondValueSplit[i]) && secondValueSplit[i] != ' ')
                {
                    flag = false;
                }
            }
            return(flag);
        }
        public ViewModelHash()
        {
            HashTable = new MassiveWords().GetHashTableAndTime("../../Model/Words.txt").Item1;
            var time = new MassiveWords().GetHashTableAndTime("../../Model/Words.txt").Item2;

            OpHistory = new ObservableCollection <OpHistoryItem>();
            var massiveRussian = new MassiveChars("Russian").GetMassiveChars();
            var massiveEnglish = new MassiveChars("English").GetMassiveChars();

            OpHistory.Add(new OpHistoryItem("Время создания хэш таблицы из " + HashTable.Values.Count() / 20 + " слов - " + time + " ms."));
            mp.Open(new Uri("../../Music/music.mp3", UriKind.RelativeOrAbsolute));
            var flag = false;

            Add = new DelegateCommand(() =>
            {
                var beep = new MediaPlayer();
                beep.Open(new Uri("../../Music/beep.mp3", UriKind.RelativeOrAbsolute));
                beep.Play();
                if (string.IsNullOrWhiteSpace(AddValueF) && !string.IsNullOrWhiteSpace(AddValueS))
                {
                    OpHistory.Add(new OpHistoryItem("Вы не ввели слово на английском, которое хотели добавить!"));
                }
                else if (!string.IsNullOrWhiteSpace(AddValueF) && string.IsNullOrWhiteSpace(AddValueS))
                {
                    OpHistory.Add(new OpHistoryItem("Вы не ввели перевод слова!"));
                }
                else if (string.IsNullOrWhiteSpace(AddValueF) && string.IsNullOrWhiteSpace(AddValueS))
                {
                    OpHistory.Add(new OpHistoryItem("Вы ничего не ввели!"));
                }
                else
                {
                    if (CheckerForEnglishAndRussian(AddValueF.ToCharArray(), AddValueS.ToCharArray()))
                    {
                        var spForAdd = new Stopwatch();
                        if (!HashTable.Search(AddValueF))
                        {
                            spForAdd.Start();
                            HashTable.Insert(new Word(AddValueF, AddValueS));
                            spForAdd.Stop();
                            OpHistory.Add(new OpHistoryItem("Слово \"" + AddValueF + "\" записано в словарь."));
                        }
                        else
                        {
                            spForAdd.Start();
                            HashTable.Remove(AddValueF);
                            HashTable.Insert(new Word(AddValueF, AddValueS));
                            spForAdd.Stop();
                            OpHistory.Add(new OpHistoryItem("Слово \"" + AddValueF + "\" перезаписано."));
                        }
                        OpHistory.Add(new OpHistoryItem("Время добавление/переписывание составило - " + spForAdd.ElapsedTicks + " тиков."));
                        RaisePropertyChanged("OpHistory");
                    }
                    else
                    {
                        OpHistory.Add(new OpHistoryItem("Первое слово должно быть Английским, а второе Русским!"));
                    }
                }
            });
            Delete = new DelegateCommand(() =>
            {
                var beep = new MediaPlayer();
                beep.Open(new Uri("../../Music/beep.mp3", UriKind.RelativeOrAbsolute));
                beep.Play();
                if (string.IsNullOrWhiteSpace(DeleteValue))
                {
                    OpHistory.Add(new OpHistoryItem("Вы ничего не ввели!"));
                }
                else
                {
                    if (CheckerForEnglish(DeleteValue.ToCharArray()))
                    {
                        if (HashTable.Search(DeleteValue))
                        {
                            var spForDelete = new Stopwatch();
                            spForDelete.Start();
                            HashTable.Remove(DeleteValue);
                            spForDelete.Stop();
                            OpHistory.Add(new OpHistoryItem("Слово \"" + DeleteValue + "\" удалено из словаря."));
                            OpHistory.Add(new OpHistoryItem("Время удаления - " + spForDelete.ElapsedTicks + " тиков"));
                        }
                        else
                        {
                            OpHistory.Add(new OpHistoryItem("Слово \"" + DeleteValue + "\" не найдено в словаре."));
                        }
                        RaisePropertyChanged("OpHistory");
                    }
                    else
                    {
                        OpHistory.Add(new OpHistoryItem("Это не английское слово \"" + DeleteValue + "\"."));
                    }
                }
            });
            Translate = new DelegateCommand(() =>
            {
                var beep = new MediaPlayer();
                beep.Open(new Uri("../../Music/beep.mp3", UriKind.RelativeOrAbsolute));
                beep.Play();
                if (string.IsNullOrWhiteSpace(TranslateValue))
                {
                    OpHistory.Add(new OpHistoryItem("Вы ничего не ввели!"));
                }
                else
                {
                    if (CheckerForEnglish(TranslateValue.ToCharArray()))
                    {
                        if (HashTable.Search(TranslateValue))
                        {
                            var spForTranslate = new Stopwatch();
                            spForTranslate.Start();
                            var russianTranslate = HashTable.Search(TranslateValue, out Word w);
                            spForTranslate.Stop();
                            OpHistory.Add(new OpHistoryItem("Перевод слова " + TranslateValue + " - " + w.Value));
                            OpHistory.Add(new OpHistoryItem("Время перевода - " + spForTranslate.ElapsedTicks + " тиков."));
                        }
                        else
                        {
                            OpHistory.Add(new OpHistoryItem("Слово \"" + TranslateValue + "\" не найдено в словаре."));
                        }
                        RaisePropertyChanged("OpHistory");
                    }
                    else
                    {
                        OpHistory.Add(new OpHistoryItem("Это не английское слово \"" + TranslateValue + "\"."));
                    }
                }
            });
            PlayMusic = new DelegateCommand(() =>
            {
                if (!flag)
                {
                    mp.Play();
                    flag = true;
                }
                else
                {
                    mp.Pause();
                    flag = false;
                }
            });
            HashTable.Search("apple", out Word wo);
            HashTable.Search("apple", out wo);
            HashTable.Remove("warm");
            HashTable.Remove("yourself");
            HashTable.Insert(new Word("Test", "Тест"));
        }
        public ViewModelTrie()
        {
            var tupleTreeAndTime = new DictionaryWords("../../Model/Words.txt").CreateTree();

            Tree      = tupleTreeAndTime.Item1;
            OpHistory = new ObservableCollection <OpHistoryItem>();
            var massiveRussian = new MassiveChars("Russian").GetMassiveChars();
            var massiveEnglish = new MassiveChars("English").GetMassiveChars();

            OpHistory.Add(new OpHistoryItem("Время создания дерева из " + tupleTreeAndTime.Item3 + " слов - " + tupleTreeAndTime.Item2 + " ms."));

            Add = new DelegateCommand(() =>
            {
                var beep = new MediaPlayer();
                beep.Open(new Uri("../../Music/beep.mp3", UriKind.RelativeOrAbsolute));
                beep.Play();
                if (string.IsNullOrWhiteSpace(AddValueF) && !string.IsNullOrWhiteSpace(AddValueS))
                {
                    OpHistory.Add(new OpHistoryItem("Вы не ввели слово на английском, которое хотели добавить!"));
                }
                else if (!string.IsNullOrWhiteSpace(AddValueF) && string.IsNullOrWhiteSpace(AddValueS))
                {
                    OpHistory.Add(new OpHistoryItem("Вы не ввели перевод слова!"));
                }
                else if (string.IsNullOrWhiteSpace(AddValueF) && string.IsNullOrWhiteSpace(AddValueS))
                {
                    OpHistory.Add(new OpHistoryItem("Вы ничего не ввели!"));
                }
                else
                {
                    var spForAdd = new Stopwatch();
                    if (CheckerForEnglishAndRussian(AddValueF.ToCharArray(), AddValueS.ToCharArray()))
                    {
                        long time = 0;
                        if (!Tree.ContainsValue(AddValueF))
                        {
                            spForAdd.Start();
                            Tree.Add(AddValueF, AddValueS);
                            spForAdd.Stop();
                            OpHistory.Add(new OpHistoryItem("Слово \"" + AddValueF + "\" записано в словарь."));
                        }
                        else
                        {
                            spForAdd.Start();
                            Tree.Remove(AddValueF);
                            Tree.Add(AddValueF, AddValueS);
                            spForAdd.Stop();
                            OpHistory.Add(new OpHistoryItem("Слово \"" + AddValueF + "\" перезаписано."));
                        }
                        OpHistory.Add(new OpHistoryItem("Время добавления/переписывания составило - " + spForAdd.ElapsedTicks + " тиков."));
                        RaisePropertyChanged("OpHistory");
                    }
                    else
                    {
                        OpHistory.Add(new OpHistoryItem("Первое слово должно быть Английским, а второе Русским!"));
                    }
                }
            });
            Delete = new DelegateCommand(() =>
            {
                var beep = new MediaPlayer();
                beep.Open(new Uri("../../Music/beep.mp3", UriKind.RelativeOrAbsolute));
                beep.Play();
                if (string.IsNullOrWhiteSpace(DeleteValue))
                {
                    OpHistory.Add(new OpHistoryItem("Вы ничего не ввели!"));
                }
                else
                {
                    if (CheckerForEnglish(DeleteValue.ToCharArray()))
                    {
                        if (Tree.ContainsValue(DeleteValue))
                        {
                            var spForDelete = new Stopwatch();
                            spForDelete.Start();
                            Tree.Remove(DeleteValue);
                            spForDelete.Stop();
                            OpHistory.Add(new OpHistoryItem("Слово \"" + DeleteValue + "\" удалено из словаря."));
                            OpHistory.Add(new OpHistoryItem("Время удаления - " + spForDelete.ElapsedTicks + " тиков"));
                        }
                        else
                        {
                            OpHistory.Add(new OpHistoryItem("Слово \"" + DeleteValue + "\" не найдено в словаре."));
                        }
                        RaisePropertyChanged("OpHistory");
                    }
                    else
                    {
                        OpHistory.Add(new OpHistoryItem("Это не английское слово \"" + DeleteValue + "\"."));
                    }
                }
            });
            Translate = new DelegateCommand(() =>
            {
                var beep = new MediaPlayer();
                beep.Open(new Uri("../../Music/beep.mp3", UriKind.RelativeOrAbsolute));
                beep.Play();
                if (string.IsNullOrWhiteSpace(TranslateValue))
                {
                    OpHistory.Add(new OpHistoryItem("Вы ничего не ввели!"));
                }
                else
                {
                    if (CheckerForEnglish(TranslateValue.ToCharArray()))
                    {
                        if (Tree.ContainsValue(TranslateValue))
                        {
                            var spForTranslate = new Stopwatch();
                            spForTranslate.Start();
                            var russianTranslate = Tree.GetValue(TranslateValue);
                            spForTranslate.Stop();
                            OpHistory.Add(new OpHistoryItem("Перевод слова " + TranslateValue + " - " + russianTranslate));
                            OpHistory.Add(new OpHistoryItem("Время перевода - " + spForTranslate.ElapsedTicks + " тиков."));
                        }
                        else
                        {
                            OpHistory.Add(new OpHistoryItem("Слово \"" + TranslateValue + "\" не найдено в словаре."));
                        }
                        RaisePropertyChanged("OpHistory");
                    }
                    else
                    {
                        OpHistory.Add(new OpHistoryItem("Это не английское слово \"" + TranslateValue + "\"."));
                    }
                }
            });
            Tree.GetValue("apple");
            Tree.Remove("warm");
            Tree.Remove("yourself");
            Tree.Add("Test", "Тест");
        }