예제 #1
0
        /// <summary>
        /// решение гапоифики
        /// </summary>
        /// <param name="T">таб</param>
        /// <returns>true</returns>
        public bool Process(OneTab T)
        {
            OT   = T;
            task = OT.tbTextTask.Text;
            string resout = "";

            string[] ar1 = System.Text.RegularExpressions.Regex.Split(task, "\r\n");
            foreach (string s1 in ar1)
            {
                if (s1 != "")
                {
                    // получим возможные наименвоания фильмов
                    List <string> names = Films.GetNameList(s1);
                    // и маску в формате "га по и фи ка"
                    string mask = Films.PrepareSearchString(s1);
                    mask = mask.ToLower().Replace("  ", " ").Replace("  ", " ").Trim();

                    foreach (string name in names)
                    {
                        // уберем цифры в скобках
                        string n = RemoveYearBrackets(name);
                        n = RemoveYearBrackets(n);
                        // уберем спецсимволы
                        n = n.Replace("`", " ").Replace("~", " ").Replace("!", " ").Replace("@", " ").Replace("#", " ").Replace("№", " ").Replace("\"", " ");
                        n = n.Replace(";", " ").Replace("$", " ").Replace("%", " ").Replace("^", " ").Replace(":", " ").Replace("&", " ").Replace("?", " ");
                        n = n.Replace("*", " ").Replace("(", " ").Replace(")", " ").Replace("-", " ").Replace("_", " ").Replace("=", " ").Replace("+", " ");
                        n = n.Replace("{", " ").Replace("}", " ").Replace("[", " ").Replace("]", " ").Replace("/", " ").Replace("|", " ").Replace("\\", " ");
                        n = n.Replace(";", " ").Replace(":", " ").Replace("'", " ").Replace(",", " ").Replace(".", " ").Replace("<", " ").Replace(">", " ");
                        n = n.Replace("«", " ").Replace("»", " ");
                        n = n.Replace("…", " ").Replace("  ", " ").Replace("  ", " ").Replace("  ", " ").Replace("  ", " ").Replace("  ", " ").Trim();
                        // составим из очередного найденного названия маску в стиле "га по и фи ка"
                        string[] ar2 = n.Split(' ');
                        string   nn  = "";
                        foreach (string s in ar2)
                        {
                            if (s == "")
                            {
                                continue;
                            }
                            if (s.Length == 1)
                            {
                                nn = nn + s + " ";
                            }
                            else
                            {
                                nn = nn + s.Substring(0, 2) + " ";
                            }
                        }
                        nn = nn.ToLower().Replace("  ", " ").Replace("  ", " ").Trim();
                        // проверяем, если соответствует - передаем во вбиватор
                        if (nn == mask)
                        {
                            Answer.Add(T, 3, n, -1);
                            resout = resout + n + "\r\n";
                        }
                    }
                }
                resout = resout + "\r\n";
            }

            T.tbSectors.Invoke(new Action(() => { T.btSolve.Enabled = true; }));
            T.tbTextHints.Invoke(new Action(() => { T.tbTextHints.Text = resout; }));
            T.tcTabText.Invoke(new Action(() => { T.tcTabText.SelectTab(1); }));
            return(true);
        }