Exemplo n.º 1
0
        static void oldTest()
        {
            //prepare cross board
            ICrossBoard cb = new CrossBoard();

            CreateCross(cb);
            var dict = new Dictionary("../../../dict/cz", cb.MaxWordLength);

            cb.Preprocess(dict);

            CrossPattern        cp    = cb.GetCrossPattern(32);
            CrossTransformation trans = cp.TryFill(null, "ADELAVOJTAHELA".AsSpan(), dict); //length 14

            trans.Transform(cp);
        }
Exemplo n.º 2
0
 CrossTransformation TryFill(string word, ICrossDictionary dict, bool puzzle)
 {
     var trans = new CrossTransformation(word);
     int instSum = 0;
     for (int i = 0; i < word.Length; i++)
     {
         if (_pattern[i] == '.')
         {
             if (AdjacentPatterns[i] != null)
             {
                 int adjIndex;
                 if (_isHorizontal)
                     adjIndex = _startY - AdjacentPatterns[i].StartY;
                 else
                     adjIndex = _startX - AdjacentPatterns[i].StartX;
                 char c = AdjacentPatterns[i].Pattern[adjIndex];
                 if (c == '.')
                 {
                     char[] adjacent = AdjacentPatterns[i].Pattern;
                     adjacent[adjIndex] = word[i];
                     int newInstCount = dict.GetMatchCount(adjacent);
                     adjacent[adjIndex] = '.';
                     if (newInstCount == 0)
                         return null;
                     instSum += newInstCount;
                     trans.AddChangeInst(i, AdjacentPatterns[i].InstantiationCount, newInstCount);
                     trans.AddChange(i, adjIndex, word[i]);
                 }
                 else if (puzzle || c != word[i])
                 {
                     return null;
                 }
             }
             trans.AddChange(-1, i, word[i]);
         }
     }
     trans.AddChangeInst(-1, _instantiationCount, (int)Constants.Unbounded);
     trans.SumInst = instSum;
     return trans;
 }