Пример #1
0
        static void Main(string[] args)
        {
            // проверяемая строка
            string test = "скандинавы (2) самоуправствовать(3) невесомость(1) перечисление(3) подтверждение(1) новостройка(3) разбиться(1)";

            test = "авторитарный (2) надпороть(2) головоногие(1) жаркое(1) стлать(2) одноклассник(3) кофейник(1) захаркать(1)";
            //test = "Принц (2) Нерадивец (3) Идеал (2) Барсук (1) Мораль (3) Проныра (1) Ведомость (4)";
            // нормализуем строку в наш формат, и, готовим перечень слов с количествами букв для взятия из каждого из слов
            Raschl.OneStr os = Raschl.Prepare(Raschl.Normalize(test));

            // часы для замера скорости
            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();
            // читаем файл словаря
            ReadWordDictionary(@"C:\TEMP\dict2.txt", @"C:\TEMP\dict2.db", Encoding.Unicode);

            SetPragma("auto_vacuum = 0");
            SetPragma("case_sensitive_like = true");
            //SetPragma("case_sensitive_like = true");
            SetPragma("cell_size_check = false");
            SetPragma("count_changes = false");
            SetPragma("fullfsync = false");
            SetPragma("synchronous = OFF");
            SetPragma("temp_store = MEMORY");
            SetPragma("query_only = true");

            //SetPragma("automatic_index = false"); // сильно замедляет !!!
            SetPragma("journal_mode = OFF");
            SetPragma("cache_size = -200000");
            SetPragma("ignore_check_constraints = false");
            ////SetPragma("journal_mode = MEMORY");
            SetPragma("mmap_size = 268435456");
            ////SetPragma("page_size = 4096");
            ////SetPragma("page_size = 16384");
            SetPragma("page_size = 65536");

            stopWatch.Stop();
            WriteTimeSpan("reading dictionary time =      ", stopWatch.Elapsed);

            Solve("авторитарный (2) надпороть(2) головоногие(1) жаркое(1) стлать(2) одноклассник(3) кофейник(1) захаркать(1)");
            Solve("Принц (2) Нерадивец (3) Идеал (2) Барсук (1) Мораль (3) Проныра (1) Ведомость (4)");
            Solve("скандинавы (2) самоуправствовать(3) невесомость(1) перечисление(3) подтверждение(1) новостройка(3) разбиться(1)");

            sql_con.Close();
            Console.WriteLine(" ");
            Console.WriteLine("it's all.. press any key to quit..");
            // ждем ввода для закрытия окна
            string k = Console.ReadLine();
        }
Пример #2
0
        private static void Solve(string v)
        {
            //Console.WriteLine(" ");
            //Console.WriteLine("Task: " + v);

            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();
            sql_cmd = sql_con.CreateCommand();
            string query = Raschl.GetSqlStr(Raschl.Prepare(Raschl.Normalize(v)));

            sql_cmd.CommandText = query;
            stopWatch.Stop();
            Console.WriteLine(" ");
            //WriteTimeSpan("prepare data for solve =       ", stopWatch.Elapsed);

            stopWatch.Restart();
            SQLiteDataReader reader = sql_cmd.ExecuteReader();

            stopWatch.Stop();
            WriteTimeSpan("sqlite job time =              ", stopWatch.Elapsed);

            stopWatch.Restart();
            DataSet ds_res = new DataSet();

            ds_res.Tables.Add("wrd");
            ds_res.Tables[0].Load(reader);
            List <string> res = new List <string>();

            foreach (DataRow drc in ds_res.Tables[0].Rows)
            {
                res.Add(drc[0].ToString());
            }
            stopWatch.Stop();
            WriteTimeSpan("reading result table time =    ", stopWatch.Elapsed);
            Console.WriteLine(" ");

            //foreach(string ss in res)
            //{
            //    Console.WriteLine(ss);
            //}
            //Console.WriteLine(" ");
        }