private bool Apply(Cell[] cells, EliminationResult result) { List <int> numbers = new List <int>(); foreach (Cell cell in cells) { if (cell.info is Number) { numbers.Add(((Number)cell.info).Value); } } bool flag = false; foreach (Cell cell in cells) { if (cell.info is Notes) { foreach (int number in numbers) { Notes notes = (Notes)cell.info; if (notes.Values[number]) { notes.Values[number] = false; result.removedNotes[number].Add(cell.Index); flag = true; } } } } return(flag); }
public override StrategyResult Apply(Board board, ref string outInfo) { EliminationResult result = new EliminationResult(); bool flag = false; for (int k = 0; k < Board.size; k++) { if (Apply(board.GetBox(k), result)) { flag = true; } if (Apply(board.GetRow(k), result)) { flag = true; } if (Apply(board.GetColumn(k), result)) { flag = true; } } return(flag ? result : null); }