How much does each variation of orientation take up?
In case of most full cubes, there is only 1 orientation, so 0 bits there.
In case of wedges, there are 3*4 = 12 different rotations (4 rotations per axis, 3 axes), so 4 bits there (2^3=8<12<16=2^4)
In case of tetras or heptas, there are 8 different orientations(1 per corner of a cube), so 3 bits there.
In case of corners, we have 6*4 = 24 different orientations(4 per side, 6 sides for a cube), so 5 bits there (2^4=16<24<32=2^5)
In case of the few cubes, which are a littlebit orientable, 6 different orientations, so 3 bits.
In case of the few fully orientable cubes, 24 orientations, like the corners.
However, taking the unused bits from case 1 and 3 and 5 and assigning them to blockID won't work, as the blockID is used to determine amount of bits used for orientation. A variable cannot be used to determine its own size, because if for some reason the next bit(outside the variable) is set, there are 2 possibilities for the size of the variable. The size it has when it would have that extra bit, and the size it would have when it wouldn't have that extra bit.
We have 2*2 possibilities:
- The variable has size n(without extra bit)
- The value stored in the variable indicates the variable has size n
- The value stored in the variable indicates the variable has size n+1 [contradiction, as n inequals n+1]
- The variable has size n+1
- The value stored in the variable indicates the variable has size n [contradiction, as n inequals n+1]
- The value stored in the variable indicates the variable has size n+1
When a contradiction occurrs, we will either get an infinite loop, a crash, or corrupted outcomes.
Ignoring the contradictions:
- The variable has size n
- The value in the variable indicates the variable has size n
- The variable has size n+1
- The value in the variable indicates the variable has size n+1
However, we can construct a sequence of bits, so that both 1 and 2 are true.
However, 1 and 2 mustn't be both true, as n inequals n+1.
Thus we will either get a crash, or corrupted outcomes.