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); }
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; }