// Сохранить тесты с сайта
        // HolaWeb.SaveTests(9000, @"D:\Develop\holachallenge\js\testcases");

        // Создать файл всех используемых в фильтре слов
        // File.WriteAllLines(Path.Combine(dir, "words_out.txt"), wordFeatures.Select(f => f.Word).ToArray());

        public static void Main()
        {
            try
            {
                jsonSerializer = new JsonSerializerMaster();
                infixCalc      = new InfixCalc(jsonSerializer, dir);

                originalWords    = File.ReadAllLines(Path.Combine(dir, "words_uniq.txt"));
                originalNotWords = File.ReadAllLines(Path.Combine(dir, "notwords_uniq.txt"));

                words = originalWords.Where(w => !w.EndsWith("'s")).ToArray();

                substCalc       = new SubstCalc(jsonSerializer, dir);
                lettersCount    = new LettersCount(jsonSerializer);
                solutionCreator = new SolutionCreator(dir, substCalc);

                //substCalc.AddCommand(substCalc.GetAffixReplaceMap(words, "suffix first.json", 6), false);
                //substCalc.AddCommand(substCalc.GetAffixReplaceMap(words, "prefix first.json", 7), true);
                //substCalc.AddCommand(substCalc.GetAffixReplaceMap(words, "suffix second.json", 6), false);
                //substCalc.AddCommand(substCalc.GetAffixReplaceMap(words, "prefix second.json", 7), false);
                //substCalc.AddCommand(substCalc.GetAffixReplaceMap(words, "suffix third.json", 6), false); // 4.8 по "ing"->"ed"
                //words = substCalc.ReplaceByCommands(words);

                substCalc.AddCommand(substCalc.GetFirstPopularSuffixReplaces(), false);
                substCalc.AddCommand(substCalc.GetPrefixReplaceMap(words), true);
                substCalc.AddCommand(substCalc.GetAffixReplaceMap(words, "trash\\suffix second 3 5 50.json", 5), false);
                substCalc.AddCommand(substCalc.GetAffixReplaceMap(words, "trash\\prefix second 3 5 50.json", 6), true);
                substCalc.AddCommand(substCalc.GetAffixReplaceMap(words, "trash\\suffix third.json", 5), false);
                substCalc.AddCommand(substCalc.GetAffixReplaceMap(words, "trash\\prefix third.json", 6), true);
                words = substCalc.ReplaceByCommands(words);

                mainBloomLength = 61450;

                Func <WordFeatureRow, bool> isWord =
                    w => w.Length <= 14 &&
                    w.VowInRow <= 3 &&
                    w.ConsInRow <= 4 &&
                    w.Word.Count(c => c == '\'') <= 1;
                wordFeatures = WordFeatureRow.Convert(words).Where(isWord).ToArray();

                ApostropheEnd_C2_LetterPositions_BloomPrefix_Func_Bloom(isWord);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
 public SolutionCreator(string dir, SubstCalc substCalc)
 {
     this.dir       = dir;
     this.substCalc = substCalc;
 }