private IEnumerable<Move> GenerateMoves()
{
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
{
Rows row = (Rows)i;
Columns column = (Columns)j;
if (GetCellValue(column, row) != Values.None) continue;
var options = GetValueOptions(column, row).ToArray();
foreach (Values option in options)
{
var score = options.Count() * 100
+ NumberOfSquaresInColumnCouldUseValue(column, option)
+ NumberOfSquaresInRowCouldUseValue(row, option)
+ NumberOfSquaresInRegionCouldUseValue(column, row, option);
yield return new Move(
column,
row,
option,
score
);
}
}
}