#define W 12 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 ; unsigned r8 : W ; unsigned r9 : W ; unsigned r10 : W ; unsigned r11 : W ; }; #define H 12 #define smallW 3 #define bigW 4 #define littleOptions ((W-smallW+1)*(H-smallW+1)) #define bigOptions ((W-bigW+1)*(H-bigW+1)) #define littleSection 7 // 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; little[i].r8=0; little[i].r9=0; little[i].r10=0; little[i].r11=0; int ix = i % (W-smallW+1) ; int iy = i / (W-smallW+1) ; if ( iy==0)little[i].r2 =little[i].r1 = little[i].r0 = littleSection << ix ; if ( iy==1)little[i].r3 =little[i].r2 = little[i].r1 = littleSection << ix ; if ( iy==2)little[i].r4 =little[i].r3 = little[i].r2 = littleSection << ix ; if ( iy==3)little[i].r5 =little[i].r4 = little[i].r3 = littleSection << ix ; if ( iy==4)little[i].r6 =little[i].r5 = little[i].r4 = littleSection << ix ; if ( iy==5)little[i].r7 =little[i].r6 = little[i].r5 = littleSection << ix ; if ( iy==6)little[i].r8 =little[i].r7 = little[i].r6 = littleSection << ix ; if ( iy==7)little[i].r9 =little[i].r8 = little[i].r7 = littleSection << ix ; if ( iy==8)little[i].r10=little[i].r9 = little[i].r8 = littleSection << ix ; if ( iy==9)little[i].r11=little[i].r10=little[i].r9 = 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 ( iy==5 ) big[i].r8 =big[i].r7 =big[i].r6 = big[i].r5=bigSection << ix ; if ( iy==6 ) big[i].r9 =big[i].r8 =big[i].r7 = big[i].r6=bigSection << ix ; if ( iy==7 ) big[i].r10=big[i].r9 =big[i].r8 = big[i].r7=bigSection << ix ; if ( iy==8 ) big[i].r11=big[i].r10=big[i].r9 = big[i].r8=bigSection << ix ; } if(1){ for ( int j = 0 ; j < bigOptions/10 ; j ++ ) { cout << j << " th state of big dude" << endl; boxout(big[j]); } for ( int i = 0 ; i < littleOptions/10 ; i ++ ) { cout << i << " th state of little dude " << endl; boxout( little[i] ); } } cout << "Single small-particle states" <= 0 ; i -- ) { two_to_power_i = (1<