Many algorithms depend on representing the states of many objects in the domain world in the smallest way ever.
This is some C++ code to do this:
int GetWorldState(vector<Obj> *Objs) { int state = 0; for(int i = 0 ; i <Objs->size(); i++) { //Shift the next bit to be initialized state <<= 1; //Get the current object Obj * ch = &Objs->operator [](i); //Fill the bit if object has a special property, otherwise don't if ( Obj->isLeft ) state |= 1; } //Return the final result return state; }
This idea can be generalized to include complex objects.