I'm writing a sudoku solver as a hobby project/kata at home and have come to refactor the below method:
My arithmetic/mathematics aren't very strong, so I'm not spotting a better way to write that.
Anyone else?
Code:
private static int GetBlockNumberForCellNumber(int cellNumber)
{
if (cellNumber < 0) throw new ArgumentOutOfRangeException("cellNumber");
if (cellNumber < 3) return 0;
if (cellNumber < 6) return 1;
if (cellNumber < 9) return 2;
if (cellNumber < 12) return 0;
if (cellNumber < 15) return 1;
if (cellNumber < 18) return 2;
if (cellNumber < 21) return 0;
if (cellNumber < 24) return 1;
if (cellNumber < 27) return 2;
if (cellNumber < 30) return 3;
if (cellNumber < 33) return 4;
if (cellNumber < 36) return 5;
if (cellNumber < 39) return 3;
if (cellNumber < 42) return 4;
if (cellNumber < 45) return 5;
if (cellNumber < 48) return 3;
if (cellNumber < 51) return 4;
if (cellNumber < 54) return 5;
if (cellNumber < 57) return 6;
if (cellNumber < 60) return 7;
if (cellNumber < 63) return 8;
if (cellNumber < 66) return 6;
if (cellNumber < 69) return 7;
if (cellNumber < 72) return 8;
if (cellNumber < 75) return 6;
if (cellNumber < 78) return 7;
if (cellNumber < 81) return 8;
throw new ArgumentOutOfRangeException("cellNumber");
}
Anyone else?