Наименьший объем памяти *:
byte puzzle[41];
GET_PUZZLE(x,y) = puzzle[(9*y+x)/2] >> ((9*y+x)%2 * 4) & 0x0F;
Каждое числовое поле хранится в 4 битах - поэтому два числа на байт.
* Только структура данных измерений;не память программы / и т. д. занята большим неэффективным GET_PUZZLE()
.
Простота использования, ремонтопригодность, скорость и т. д .:
byte puzzle[9][9];
GET_PUZZLE(x,y) = puzzle[x][y]
Что-нибудь вменяемоечеловек будет использовать.К счастью, это тоже самое очевидное.