[ create a new paste ] login | about

Link: http://codepad.org/UBUAl3KK    [ raw code | output | fork ]

C++, pasted on Oct 13:
int nb(int x){
	x=((x>>1)&0x55555555) + (x&0x55555555);
	x=((x>>2)&0x33333333) + (x&0x33333333);
	x=((x>>4)&0x0f0f0f0f) + (x&0x0f0f0f0f);
	x=((x>>8)&0x00ff00ff) + (x&0x00ff00ff);
	return ((x>>16)&0x0000ffff) + (x&0x0000ffff);
}
int main(){
	int i,j,k,f[12],v[20],c,cv,cn,cp[21];
	for(i=0;i<20;i++)v[i]=1<<i;
	f[ 0] = v[ 0] | v[ 1] | v[ 2] | v[ 3] | v[ 4];
	f[ 1] = v[ 0] | v[ 1] | v[ 5] | v[ 6] | v[10];
	f[ 2] = v[ 1] | v[ 2] | v[ 6] | v[ 7] | v[11];
	f[ 3] = v[ 2] | v[ 3] | v[ 7] | v[ 8] | v[12];
	f[ 4] = v[ 3] | v[ 4] | v[ 8] | v[ 9] | v[13];
	f[ 5] = v[ 4] | v[ 0] | v[ 9] | v[ 5] | v[14];
	f[ 6] = v[ 5] | v[14] | v[10] | v[19] | v[15];
	f[ 7] = v[ 6] | v[10] | v[11] | v[15] | v[16];
	f[ 8] = v[ 7] | v[11] | v[12] | v[16] | v[17];
	f[ 9] = v[ 8] | v[12] | v[13] | v[17] | v[18];
	f[10] = v[ 9] | v[13] | v[14] | v[18] | v[19];
	f[11] = v[15] | v[16] | v[17] | v[18] | v[19];

	for(i=0;i<21;i++)cp[i]=0;
	for(i=0,c=0,cv=0;i<10;i++)for(j=i+1;j<11;j++)for(k=j+1;k<12;k++){
		cn=nb(f[i] | f[j] | f[k]);
		cp[cn]++;
		cv+=cn;
		c++;
	}
	printf("%d  ,%d  ,%f\n",c,cv,(double)cv/(double)c);
	printf("10:%d  ,11:%d  ,13:%d  ,15:%d  ,tatal:%d\n\n",
		   cp[10],cp[11],cp[13],cp[15],cp[10]+cp[11]+cp[13]+cp[15]);

	for(i=0;i<21;i++)cp[i]=0;
	for(i=0,c=0,cv=0;i<12;i++)for(j=0;j<12;j++)for(k=0;k<12;k++){
		cn=nb(f[i] | f[j] | f[k]);
		cp[cn]++;
		cv+=cn;
		c++;
	}
	printf("%d  ,%d  ,%f\n",c,cv,(double)cv/(double)c);
	printf("5:%d  ,8:%d  ,10:%d  ,11:%d  ,13:%d  ,15:%d  ,tatal:%d\n\n",
		   cp[5],cp[8],cp[10],cp[11],cp[13],cp[15],cp[5]+cp[8]+cp[10]+cp[11]+cp[13]+cp[15]);

	return 0;
}


Output:
1
2
3
4
5
6
220  ,2720  ,12.363636
10:20  ,11:60  ,13:120  ,15:20  ,tatal:220

1728  ,19980  ,11.562500
5:12  ,8:180  ,10:336  ,11:360  ,13:720  ,15:120  ,tatal:1728



Create a new paste based on this one


Comments: