static bool IsValidFast(int[,] board)
for (var i = 0; i < 9; i++)
int rowMask = 0, colMask = 0, sqrMask = 0;
for (var j = 0; j < 9; j++)
int rowBit = 1 << (board[i, j] - 1);
if ((rowMask & rowBit) != 0)
int colBit = 1 << (board[j, i] - 1);
if ((colMask & colBit) != 0)
int r = 3 * (i / 3) + j / 3;
int c = 3 * (i % 3) + j % 3;
int sqrBit = 1 << (board[r, c] - 1);
if ((sqrMask & sqrBit) != 0)
var result = IsValidFast(soduku);
Console.WriteLine(result);