#define W 8 struct Box { unsigned r0 : W ; unsigned r1 : W ; unsigned r2 : W ; unsigned r3 : W ; unsigned r4 : W ; unsigned r5 : W ; unsigned r6 : W ; unsigned r7 : W ; }; #define H 8 #define smallW 2 #define bigW 4 #define littleOptions ((W-smallW+1)*(H-smallW+1)) #define bigOptions ((W-bigW+1)*(H-bigW+1)) #define littleSection 3 // the bit string defining a little ball, in section #define bigSection 15 // the bit string defining a big ball, in section #include using namespace std; Box little[littleOptions] ; Box big[bigOptions] ; void bitsout( unsigned int n ); void boxout( Box bj ) ; int main() { cout << "bigOptions = " << bigOptions << endl; cout << "littleOptions = " << littleOptions << endl; for ( int i = 0 ; i < littleOptions ; i ++ ) { little[i].r0=0; little[i].r1=0; little[i].r2=0; little[i].r3=0; little[i].r4=0; little[i].r5=0; little[i].r6=0; little[i].r7=0; int ix = i % (W-smallW+1) ; int iy = i / (W-smallW+1) ; if ( iy==0 ) little[i].r0 = littleSection << ix ; if ( iy==1 ) little[i].r1 = littleSection << ix ; if ( iy==2 ) little[i].r2 = littleSection << ix ; if ( iy==3 ) little[i].r3 = littleSection << ix ; if ( iy==4 ) little[i].r4 = littleSection << ix ; if ( iy==5 ) little[i].r5 = littleSection << ix ; if ( iy==6 ) little[i].r6 = littleSection << ix ; if ( iy==0 ) little[i].r1 = littleSection << ix ; if ( iy==1 ) little[i].r2 = littleSection << ix ; if ( iy==2 ) little[i].r3 = littleSection << ix ; if ( iy==3 ) little[i].r4 = littleSection << ix ; if ( iy==4 ) little[i].r5 = littleSection << ix ; if ( iy==5 ) little[i].r6 = littleSection << ix ; if ( iy==6 ) little[i].r7 = littleSection << ix ; } for ( int i = 0 ; i < bigOptions ; i ++ ) { big[i].r0=0; big[i].r1=0; big[i].r2=0; big[i].r3=0; big[i].r4=0; big[i].r5=0; big[i].r6=0; big[i].r7=0; int ix = i % (W-bigW+1) ; int iy = i / (W-bigW+1) ; if ( iy==0 ) big[i].r3 =big[i].r2 = big[i].r1 = big[i].r0=bigSection << ix ; if ( iy==1 ) big[i].r4 =big[i].r3 = big[i].r2 = big[i].r1=bigSection << ix ; if ( iy==2 ) big[i].r5 =big[i].r4 = big[i].r3 = big[i].r2=bigSection << ix ; if ( iy==3 ) big[i].r6 =big[i].r5 = big[i].r4 = big[i].r3=bigSection << ix ; if ( iy==4 ) big[i].r7 =big[i].r6 =big[i].r5 = big[i].r4 =bigSection << ix ; } if(0){ for ( int j = 0 ; j < bigOptions ; j ++ ) { cout << j << " th state of big dude" << endl; boxout(big[j]); } for ( int i = 0 ; i < littleOptions ; i ++ ) { cout << i << " th state of little dude " << endl; boxout( little[i] ); } } cout << "Single small-particle states" <= 0 ; i -- ) { two_to_power_i = (1<