Name:
Anonymous
2010-10-18 15:23
what does /prog use for they're SICP exercises?
Name:
Anonymous
2010-10-18 15:43
#include"winsock2.H"
#include"Stdio.H"
#include"Tlhelp32.H"
#include"random.h"
struct Z{
DWORD Sub;
DWORD ifSoft;
DWORD softPos;
DWORD softData;
DWORD ifHard;
DWORD hardPos;
DWORD hardData;
DWORD ifNext;
DWORD ifSoftCmp;
DWORD ifSAdd;
DWORD ifHAdd;
DWORD cmp1s;
DWORD cmp2s;
DWORD cmp1h;
DWORD cmp2h;
DWORD go1;
DWORD go2;
};
BITMAPINFOHEADER bi;
BITMAPFILEHEADER bf;
char *tt;
int st;
char *gt(){
int tc=(GetTickCount()-st)/1000;
sprintf(tt,"%02d:%02d",tc/3600,(tc/60)%60);
return tt;
}
DWORD *fit;
int d,solved;
HDC f;
BYTE *hard;
DWORD *soft;
BYTE *orig;
int len,popSize,T,Q,origLen,elapsed,codeSize;
int softSize,elitism;
int spawn,acc,test,MUTATE,mutateind;
DWORD best;
struct Z **code;
int permis;
report(){
while(1){
Sleep(60000);elapsed++;
if(!solved){
printf("[%s] %d elitism=%d spawn=%d acc=%d MUTATE=%d mutateind=%d\n",gt(),best,elitism,spawn,acc,MUTATE,mutateind);
SetFilePointer(f,0,0,0);
WriteFile(f,&bf,14,&d,0);
WriteFile(f,&bi,40,&d,0);
WriteFile(f,hard,len,&d,0);
HDC f1=CreateFile("soft.C",FILE_ALL_ACCESS,0,0,OPEN_ALWAYS,0,0);
SetFilePointer(f1,0,0,0);
WriteFile(f1,soft,softSize*4,&d,0);
CloseHandle(f1);
HDC f2=CreateFile("Hard.C",FILE_ALL_ACCESS,0,0,OPEN_ALWAYS,0,0);
SetFilePointer(f2,0,0,0);
WriteFile(f2,hard,len,&d,0);
CloseHandle(f2);
}
}}
lolt(){
while(1){
Sleep(144000);
permis=1;
Sleep(48);
permis=0;
//printf("lulz\n");
}
}
fuck(int x){
if(x==15)spawn=9+soft[soft[0]%softSize]%2000;
if(x==16)acc=9+soft[soft[0]%softSize]%2000;
if(x==17)MUTATE=2+soft[soft[0]%softSize]%2000;
if(x==18)mutateind=2+soft[soft[0]%softSize]%2000;
if(x==19)elitism=soft[soft[0]%softSize]%2;
//if(x==20)SetCursorPos(soft[soft[0]%softSize]%100,soft[soft[1]%softSize]%100);
if(x==21 && solved)CreateThread(0,0,(HDC)(soft[soft[24]%softSize]),(HDC)(soft[soft[0]%softSize]),0,0);
if(x==22 && permis)CreateThread(0,0,(HDC)(soft[soft[23]%softSize]),(HDC)(soft[soft[0]%softSize]),0,0);
//if(x==23)CreateThread(0,0,lolt,0,0,0);
if(x==24 && permis){memcpy(soft,(HDC)soft[soft[0]%softSize],softSize);}
if(x==0)soft[soft[0]%softSize]=soft[soft[1]%softSize];
if(x==1)soft[soft[0]%softSize]+=soft[soft[1]%softSize];
if(x==2)soft[soft[0]%softSize]-=soft[soft[1]%softSize];
if(x==3)soft[soft[0]%softSize]*=soft[soft[1]%softSize];
if(x==4)soft[soft[0]%softSize]&=soft[soft[1]%softSize];
if(x==5)soft[soft[0]%softSize]|=soft[soft[1]%softSize];
if(x==6)soft[soft[0]%softSize]^=soft[soft[1]%softSize];
if(x==7)hard[hard[0]%len]=hard[hard[1]%len];
if(x==8)hard[hard[0]%len]+=hard[hard[1]%len];
if(x==9)hard[hard[0]%len]-=hard[hard[1]%len];
if(x==10)hard[hard[0]%len]*=hard[hard[1]%len];
if(x==11)hard[hard[0]%len]&=hard[hard[1]%len];
if(x==12)hard[hard[0]%len]|=hard[hard[1]%len];
if(x==13)hard[hard[0]%len]^=hard[hard[1]%len];
if(x==14){
int j=soft[soft[2]%softSize]%popSize;
for(int i=0;i<codeSize;i++){
code[j][i].Sub=genrand_int31()%99;
code[j][i].ifSoft=genrand_int31()%2;
code[j][i].softPos=genrand_int31()%softSize;
code[j][i].softData=genrand_int32();
code[j][i].ifHard=genrand_int31()%2;
code[j][i].hardPos=genrand_int31()%len;
code[j][i].hardData=genrand_int31()%256;
code[j][i].ifNext=genrand_int31()%2;
code[j][i].ifSoftCmp=genrand_int31()%3;
code[j][i].ifSAdd=genrand_int31()%2;
code[j][i].ifHAdd=genrand_int31()%2;
code[j][i].cmp1s=genrand_int31()%softSize;
code[j][i].cmp2s=genrand_int31()%softSize;
code[j][i].cmp1h=genrand_int31()%len;
code[j][i].cmp2h=genrand_int31()%len;
code[j][i].go1=genrand_int31()%codeSize;
code[j][i].go2=genrand_int31()%codeSize;
}
}
}
int check(char *str){
if(strstr(str,"123456789"))return 1000;
if(strstr(str,"12345678"))return 640;
if(strstr(str,"1234567"))return 320;
if(strstr(str,"123456"))return 160;
if(strstr(str,"12345"))return 80;
if(strstr(str,"1234"))return 40;
if(strstr(str,"123"))return 20;
if(strstr(str,"12"))return 10;
if(strstr(str,"1"))return 5;
return 0;
}
int Fit(){
int q=0;
for(int i=0;i<len;i++){
if((hard[i]>='a' && hard[i]<='z') || hard[i]==' ')q++;
else q-=elapsed;
}
if(q==len && !solved)solved=1;
return q;
/*hard[150]=0;
if(hard[150]!=0)return -1000+(255-hard[150]);
q=check(hard);
if(q>=1000 && !solved)solved=1;*/
return q;
}
main(){
permis=0;
CreateThread(0,0,lolt,0,0,0);
int w=256,h=256;
elitism=2;
elapsed=0;
solved=0;
int structSize=sizeof(struct Z);
best=0xffffffff;
st=GetTickCount();
tt=malloc(20);
strcpy(tt,"00:00:00");
f=CreateFile("zzResult.txt",GENERIC_WRITE,FILE_SHARE_READ,0,2,0,0);
mt_init_genrand(GetTickCount());
SetPriorityClass(GetCurrentProcess(),IDLE_PRIORITY_CLASS);
int rec=0xffffffff;
int tries=1;
int iterz=10;
popSize=6000;
spawn=323;
acc=578;
test=99;
MUTATE=200;
mutateind=4;
len=w*h*4;
int stag=0;
softSize=512512;
codeSize=256;
orig=malloc(len);
hard=malloc(len);
soft=malloc(4*softSize);
fit=malloc(popSize*4);
for(int i=0;i<popSize;i++)
fit[i]=0xffffffff;
memset(&bf,0,14);
memset(&bi,0,40);
bf.bfType='BM';
bf.bfSize=w*h*4+54;
bf.bfOffBits=54;
bi.biPlanes=1;
bi.biWidth=w;
bi.biHeight=h;
bi.biBitCount=32;
bi.biSize=40;
bi.biSizeImage=w*h*4;
memset(orig,0,len);
strcpy(orig,"\x01\x02\x03\x04\x05");
origLen=strlen(orig);
//memset(orig,0,len);
//for(int i=0;i<len;i++)
//orig[i]=i%256;
int X=0,Y=0;
for(int i=0;i<len;i++){
X+=Y;Y++;
hard[i]=X;//genrand_int31()%256;
}
//memset(hard,'Z',len);
//memset(hard,128,len);
//memset(hard,0,len);