Имеется матрица n * m.

Код:
0 4 0
4 4 4
4 0 4
Требуется, взависимости от полученного значения, в диапозоне [0 ; 4) развернуть матрицу.
то есть:
0

Код:
0 4 0
4 4 4
4 0 4
1

Код:
4 4 0
0 4 4
4 4 0
2

Код:
4 0 4
4 4 4
0 4 0
3

Код:
0 4 4
4 4 0
0 4 4
Решений в данном случае достаточно много, но все, найденые мной, либо громоздкие, либо не производительные. Хотелось бы какое нибудь комплексное, элегантное решение.
З.Ы. матрица может в любой n-ный момент быть любого из перечисленныхь видов.
Размерность матрицы неограничена и не обязательно является равносторонней (квадратом).