コード例 #1
0
ファイル: table.cs プロジェクト: servelll/skyscrapers_v4
        bool Ariadna(table t, point p)
        {
            bool l_d = false;

            if (g_d && l_d)
            {
                CallBackMy.callbackEventHandler("Рассматриваем таблицку\n");
                t.print(); t.print_cand();
                CallBackMy.callbackEventHandler("\n");
            }
            t.set_cell(p);

            int k = 0;

            for (k = 0; (k < 5) && !t.is_full(); k++)
            {
                try {
                    t.Check();
                    //методы работы для Ариадны
                    t.creating_blocks(); t.optimization_blocks(); t.Check();
                    t.sum_two(); t.check_set_single(); t.Check();
                    t.max_stairs(); t.check_set_single(); t.Check();
                    t.min_stairs(); t.check_set_single(); t.Check();
                    t.free_stairs(); t.check_set_single(); t.Check();
                    //t->print_blocks();
                    //сама Ариадна
                    //if (t.entry_level < 2 && k >= 4)
                    //{
                    //	t.Ariadna_s_thread(); t.check_set_single();
                    //}
                }
                catch (Exception e)
                {
                    CallBackMy.callbackEventHandler("Уровень " + t.entry_level + ": Ариадна отсекла кандидат " + p.value + " у ячейки (" + p.x + ", " + p.y + ")\n");
                    this.candidates[p.x, p.y, p.value - 1] = false;
                    return(true);
                }
            }
            if (g_d && l_d)
            {
                CallBackMy.callbackEventHandler("После преобразований\n");
                t.print(); t.print_cand();
                CallBackMy.callbackEventHandler("\n");
            }
            return(false);
        }