private void Process(NumbersInfo numbersInfo, GridPoint cell, NumbersBinary freeNumbers) { for (Int32 number = Defs.MinNumber; number < Defs.MaxNumber; ++number) { if ((freeNumbers & NumbersBinaryHelper.CreateForNumber(number)) != 0) { AddCell(numbersInfo, number, cell); } } }
private static CellsInfo ScanCells(Grid grid, GridPoint[] cells) { CellsInfo cellsInfo = new CellsInfo(); NumbersBinary allNumbers = NumbersBinaryHelper.CreateForRange(Defs.MinNumber, Defs.MaxNumber); NumbersBinary result = cells.Where(cell => grid[cell] != 0).Aggregate(allNumbers, (numbers, cell) => numbers.UseNumber(grid[cell])); foreach (GridPoint cell in cells.Where(cell => grid[cell] == 0)) { cellsInfo.Data[cell] = result; } return(cellsInfo); }