/* Nonogram Solver (Japanese Illust Logic Solver) Program, Sample Code Ver. 2014/05/24 9:30am This file is m246k.c gcc -o m246k m246k.c -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 -lGL -O2 Available OS : Ubuntu or Linux Mint (May be LOW Versions ?) Required Library : $ sudo apt-get install libX11-dev libx11-6 libncurses5-dev Reference URL : [1] http://logic777.web.fc2.com/ [2] http://logic777.web.fc2.com/ne/index312.htm DownLoad URL : [3] http://ubuntu.nomaki.jp/ubu/biglogic/biglogic_k140430a.zip usage: $ ./m246k [mno file] $ ./m246k micky.mno or $ ./m246k micky [mno file example: (micky.mno)] ===== start of micky.mno file ==== From 26 Line To 99 Line ==== ; ; ↓ここから本番です ; *M ミッキーマウスがウィンクする *Y35 *T30 ; *y001 16 *y002 16 *y003 16 *y004 15 *y005 13 *y006 11 *y007 8 *y008 12 *y009 3.5.2 *y010 1.4.2.2 *y011 2.4.1.2 *y012 3.5.2 *y013 3.4.2 *y014 8.3.2 *y015 8.1.1.2 *y016 8.1.1.2.2 *y017 8.1.1.2.4 *y018 8.1.1.1.2.2 *y019 9.2.1.2.1 *y020 9.3.1.1.1.1 *y021 10.9.3.1 *y022 11.4.1.1 *y023 1.11.1.4.1.1 *y024 7.1.5.1.2 *y025 5.6.2.1 *y026 3.5.1.2 *y027 3.2.4.2.1 *y028 2.2.2.2 *y029 1.1.2.2.2 *y030 2.3.3.2.3 *y031 2.8.2.4 *y032 3.1.6.7 *y033 5.4.8 *y034 2.9 *y035 18 ; *t001 14 *t002 12 *t003 14 *t004 14 *t005 17 *t006 20 *t007 16.2 *t008 4.15.2 *t009 5.4.6.1 *t010 6.2.3.2 *t011 6.2.2.1.1 *t012 8.1.1.1 *t013 8.1.3.2.1 *t014 8.1.2.3 *t015 9.7.2.2 *t016 9.1.4.3.1 *t017 10.1.3.1.3.1 *t018 11.2.3.3.1 *t019 9.7.3.3.1 *t020 6.1.1.4.3.1 *t021 5.1.2.1.5.3.1 *t022 4.2.2.3.5.2.2 *t023 3.2.1.2.1.4.2.3 *t024 2.1.1.3.2.5 *t025 3.2.6 *t026 6.1.3.2.4 *t027 4.5.2.5 *t028 1.1.3.6 *t029 2.3.6 *t030 7.6 ; ===== end of micky.mno file ===== */ #include #include #include #include #include #include #define LGETC 67890L #define S40 55 #define S60 160 #define TTN 7 #define TT20 300 #define TT25 200 #define SS10 14 #define TT12 30 #define TT8 300 #define TT5 10 #define TT4 20 #define A12 12 #define A15 12 #define EESFS 1 #define EESFU 000000 #define GGSFS 0 #define GGSFU 990000 #define max 512 #define KFIN 102 #define KSTART 103 #define KEND 104 #define KKK 105 #define NARABI 106 #define CLK 1.0 #define NISEN 2000 #define BYO 100 #define M1F 1000 #define R1F 500 #define R2F 180 #define R3F 180 #define R4F 180 char msg[200]; unsigned char data[max][max]; //unsigned char data2[max][max]; unsigned char ht[max][NARABI]; unsigned char hy[max][NARABI]; int it[max][NARABI]; int iy[max][NARABI]; unsigned char ht5[max][NARABI]; unsigned char hy5[max][NARABI]; /* int asx[NISEN]; int asy[NISEN]; int asj[NISEN]; int ask[NISEN]; int asl[NISEN]; int ascnt=0; */ int kmf,kma,kmb; int nr[NARABI][max]; int nr2[NARABI][max]; int nr3[NARABI][max]; int nt[NARABI]; int ut[max][NARABI]; int uy[max][NARABI]; int sst[max][NARABI]; int ssy[max][NARABI]; int eet[max][NARABI]; int eey[max][NARABI]; long ffts[max],ffys[max]; long fftu[max],ffyu[max]; long FFT,EEE; int CC10=440,jcnt=0; long aac=0x772222,bbc=0xeeee88; int notimesave=0; long kaime,fasi,fasj,fasum; long lgetc=0; int lsa,lea; char sss[200]; long pt1s,st1s,pt3s,st3s,pt4s,st4s; long dsf2s,esfs,esf2s; long pt1u,st1u,pt3u,st3u,pt4u,st4u; long dsf2u,esfu,esf2u,tt1s; long gsfs,gsfu; long oldsec=0, nowsec=0; long oldvsec=0,nowvsec=0; void gettime(); long getsec,getusec; int ttk; int bst,bed,bb[NARABI],mb[NARABI],ma[NARABI]; int maa[NARABI]; int l[NARABI],ne[NARABI],ns[NARABI]; int ne2[NARABI],ns2[NARABI]; int z1[max],z2[max],zflag,iymax,itmax; int s1,k1,z3,z4,fff,ends; int TT10; long long int FFF; void uucheckt(int i); void uuchecky(int i); void uu0checkt(int i); void uu0checky(int i); void uuacheckt(int i); void uuachecky(int i); void uu2checkt(int i,int km,int ns[NARABI]); void uu2checky(int i,int km,int ns[NARABI]); void uu4checkt(int i,int km,int ns[NARABI]); void uu4checky(int i,int km,int ns[NARABI]); void uubcheckt(int i,int km,int ns[NARABI]); void uubchecky(int i,int km,int ns[NARABI]); void uus(int itys); void uue(int i,char ty); void lpph(); int katei1(); int katei2(); int katei3(int i,int j); int katei3a(int i,int j); int katei3all(); void printi(char yt,int i); void ccheckt(); void cchecky(); unsigned long d[max],d2[max],dx; unsigned int fup[max],fdw[max],f1[max],f2[max]; int tatemax, yokomax; int kmin, kmax; int mmax; int ls,le; int scount,sc; int ktmax,kymax; int eflag,eflag2,eflag3,eflag4,eflag5,eflag6; clock_t time1, time2; long extime; int dot1,dot2; int sl=6,sb=0,sa=0; int trace=0; int kdata=50; int speed=5; int length=220; long nuri=0; int asc11(char a); void intro(); void intro2(); void mainz(); void mainy(); void mno_open1(char *file); void mno_save1(); void point1x(); void point1z(); void point2x(); void point3(); void point4a(); void point5a(); void sum1it(int i, int kst, int ked, int lst, int led); void sum1iy(int i, int kst, int ked, int lst, int led); void batu1it(int i, int kst, int ked, int lst, int led); void batu1iy(int i, int kst, int ked, int lst, int led); void kmck(int i,char yt); void bcheckt(); void bchecky(); void bcheck2t(int i); void bcheck2y(int i); void uniqueing(); void uniqt(); void uniqy(); void printi(char yt,int i); void pcheckt(); void pchecky(); void pcheckt2(int i); void pchecky2(int i); void pcheckt3(int i); void pchecky3(int i); void qcheckt2(int i); void qchecky2(int i); void rcheckt(); void rchecky(); void ucheckt(); void uchecky(); void ucheckt2(int i); void uchecky2(int i); void ucheckt3(); void uchecky3(); void scheckt(); void schecky(); void dcheckt(); void dchecky(); void u1t(); void u1y(); void v2it(); void v2iy(); void fax1it(int i,int lst,int led); void fax1iy(int i,int lst,int led); void mark(int i, int j, char yt,unsigned char val); void vmark(int i, int j, char yt,int val); int map(int i, int l, char yt,int val); void ksef(int i, char yt); void lse(int i, char yt); void ch(); void ch1(); void swe(int i,char yt); int min11(int a,int b); int max11(int a,int b); double min22(double a,double b); double max22(double a,double b); int fincount(); void ktymax(); void pr_10x(int suu,int x,int y,int col); void a_write1(int a,int b,unsigned char *c,int ss); void chset1(int a, int b,int c,int ss); void box(int x1,int y1,int fu,int iro); void errorbox(int x1,int y1,int fu); void newz(); void newz2(); void newz3(); int newf,newf2; struct line{ char ty; int k,i; int k1,start,end,kmax,kmin,len; long fas,fau; struct line *next; }; struct backboard{ unsigned char data_black[max][max]; unsigned char data_white[max][max]; unsigned char ht_black[max][NARABI]; unsigned char hy_black[max][NARABI]; unsigned char ht_white[max][NARABI]; unsigned char hy_white[max][NARABI]; int it_black[max][NARABI]; int iy_black[max][NARABI]; int it_white[max][NARABI]; int iy_white[max][NARABI]; int sst_black[max][NARABI]; int ssy_black[max][NARABI]; int eet_black[max][NARABI]; int eey_black[max][NARABI]; int sst_white[max][NARABI]; int ssy_white[max][NARABI]; int eet_white[max][NARABI]; int eey_white[max][NARABI]; int no,jotai,mujun,ltemp; int ii,jj,b1,w1; long b3,w3; struct backboard *next,*back; }; long fsfs,fsfu; struct line *stt; struct line *start,*info2; struct line *last,*info,*gcdata,*temp; struct line *stt2; struct line *start2,*info22; struct line *last2,*info2,*gcdata2,*temp2; struct line *shojun(struct line *); struct line *node_create(); struct backboard *sttbb,*lpp,*startff,*gcdataff; struct backboard *startbb,*info2bb; struct backboard *lastbb,*infobb,*gcdatabb,*tempbb; struct backboard *gc2bb; struct backboard *start2bb; struct backboard *backboard_create(); struct backboard *sttcc; struct backboard *startcc,*info2cc; struct backboard *lastcc,*infocc,*gcdatacc,*tempcc; struct backboard *gc2cc; struct backboard *start2cc; int try1(); void movedata(unsigned char d1[max][max],unsigned char d2[max][max],unsigned char zht1[max][NARABI],unsigned char zht2[max][NARABI],unsigned char zhy1[max][NARABI],unsigned char zhy2[max][NARABI],int zit1[max][NARABI],int zit2[max][NARABI],int ziy1[max][NARABI],int ziy2[max][NARABI]); void movedata2(int st1[max][NARABI],int st2[max][NARABI],int sy1[max][NARABI],int sy2[max][NARABI],int et1[max][NARABI],int et2[max][NARABI],int ey1[max][NARABI],int ey2[max][NARABI]); int nokori10(int i, int j); int nokori20(); int rote( long dsfs,long dsfu); int rote0(long dsfs,long dsfu); int mapflg=0,maperr; long tynuri=0; int mujunflg=0; void first(); void hantei(); void g_dot(int x, int y); void g_text(int x, int y,char *str); void g_line(int x0, int y0, int x1, int y1); void g_rgb(long iro); void g_fill(int x0,int y0, int wid, int hei); void g_box(int x0, int y0, int wid, int hei); void g_clear(); Display *dpy; int screen; Window win, root; GC gc; unsigned int win_width=1024, win_height=600; unsigned int dummy; XEvent event; KeySym key_sym; Atom atom1, atom2; int loop1=1,f2flg; int exx[100],exy[100],exz[100],ex1; int newt[max],newy[max]; int newt2[max],newy2[max]; int newt3[max],newy3[max]; int oldt[max],oldy[max]; char ar2[20],ar3[30],fbc[10]; int fbb; char cch,uuu[100]; unsigned char test_mno[10]="test.mno",test[10]="test"; unsigned char filet[30]; unsigned char filek[30]; int argc1,kk; float tt1=0.0; char *wd[7]={"日","月","火","水","木","金","土"}; time_t t; struct tm *tmp; int main( int argc, char *argv[] ) { int si,cc,dd1,dd2,i,j,k,l,m,n; unsigned char kcrgb[5]=".mno",arg[20],*arx; FILE *fp,*ft; argc1=argc; gettime(); st1s=getsec; st1u=getusec; first(); if(argc<2){ mno_open1(test_mno); } else{ si=0; arx=argv[1]; while(*arx != '\0' && *arx != '.' && si<8){ arg[si] = *arx; arx++; si++; } arg[si]='\0'; strcpy(ar2,arg); strcat(arg,kcrgb); mno_open1(arg); g_rgb(0xffffff); g_fill(600,13,80,13); g_rgb(0x0000ff); g_text(610,26,arg); } sprintf(sss,"size: %dx%d",yokomax,tatemax); g_rgb(0xffffff); g_fill(500,0,100,13); g_rgb(0x0000ff); g_text(520,13,sss); sprintf(sss,"Exe: %s",argv[0]); g_rgb(0xffffff); g_fill(500,13,100,13); g_rgb(0x0000ff); g_text(520,26,sss); ktymax(); kk=max11(tatemax,yokomax); if(yokomax<=10 && tatemax<=20){ dot1=25; dot2=24; } else if(yokomax<=15 && tatemax<=30){ dot1=20; dot2=19; } else if(yokomax<=20 && tatemax<=40){ dot1=15; dot2=14; } else if(yokomax<=25 && tatemax<=40){ dot1=13; dot2=12; } else{ dd1=420/yokomax; dd2=800/tatemax; dd1=min11(dd1,dd2); dot1=dd1; dot2=dd1-1; if(dot2<28) dot2=dot1; ktmax=kymax=0; } intro(); fbb=1; tt1=0.0; tt1s=0; oldsec=0; strcpy(ar3,ar2); strcat(ar3,"."); sprintf(uuu,"%d",fbb); strcat(ar3,uuu); fp=fopen(ar3,"r"); if(fp!=NULL){ while(fp!=NULL){ fbb++; strcpy(ar3,ar2); strcat(ar3,"."); sprintf(uuu,"%d",fbb); strcat(ar3,uuu); fp=fopen(ar3,"r"); } fbb--; strcpy(ar3,ar2); strcat(ar3,"."); sprintf(uuu,"%d",fbb); strcat(ar3,uuu); fp=fopen(ar3,"r"); for(i=1;i<=yokomax;i++){ for(j=1;j<=tatemax;j++){ cch=fgetc(fp); if(cch=='_') data[j][i]=0; if(cch=='Q'){ data[j][i]=100; box( (kymax+j)*dot1+20,(ktmax+i)*dot1+30,dot2,5); nuri++;} if(cch=='x'){ data[j][i]=200; box( (kymax+j)*dot1+20,(ktmax+i)*dot1+30,dot2,6); nuri++;} } cch=fgetc(fp); } fclose(fp); if(nuri==tatemax*yokomax) notimesave=1; if(argc<2) strcpy(filet,test); else strcpy(filet,ar2); strcat(filet,"2.mt"); ft = fopen(filet,"r"); if(ft==NULL){ printf("ファイル名が %s 失敗\n",filet); exit(0); } fscanf(ft,"%f",&tt1); fclose(ft); tt1s=(int)tt1; oldsec=(tt1s/BYO); for(i=1;i<=tatemax;i++) pcheckt3(i); for(i=1;i<=yokomax;i++) pchecky3(i); if(fincount()==1) goto FIN; } else{ tt1=0.0; tt1s=0; oldsec=0; } if(notimesave==0){ if(argc<2) strcpy(filet,test); else strcpy(filet,ar2); strcat(filet,"3.mt"); ft = fopen(filet,"r"); if(ft==NULL){ kaime=0; } else{ fscanf(ft,"%8ld",&kaime); fclose(ft); } kaime++; ft = fopen(filet,"w"); if(ft==NULL){ printf("ファイル名が %s 失敗\n",filet); exit(0); } fprintf(ft,"%8ld",kaime); fclose(ft); if(argc<2) strcpy(filek,test); else strcpy(filek,ar2); strcat(filek,"m.karte"); ft = fopen(filek,"a"); if(ft==NULL){ printf("ファイル名が %s 失敗\n",filek); exit(0); } fprintf(ft,"\n第%02ld回目: プログラム名=%s: 問題ファイル=%s\n",kaime,argv[0],argv[1]); time(&t); tmp = localtime(&t); fprintf(ft,"開始時刻:%d年%02d月%02d日 (%s) %02d時%02d分%02d秒\n", 1900 + tmp->tm_year, tmp->tm_mon+1, tmp->tm_mday, wd[tmp->tm_wday],tmp->tm_hour,tmp->tm_min,tmp->tm_sec); fprintf(ft,"サイズは横%dx縦%d  打ち切りタイム=%d秒\n",yokomax,tatemax,speed); fprintf(ft,"タイトルは「%s」\n",msg); fclose(ft); } else{ if(argc<2) strcpy(filek,test); else strcpy(filek,ar2); strcat(filek,"m.karte"); ft = fopen(filek,"a"); if(ft==NULL){ printf("ファイル名が %s 失敗\n",filek); exit(0); } time(&t); tmp = localtime(&t); fprintf(ft,"\n閲覧時刻:%d年%02d月%02d日 (%s) %02d時%02d分%02d秒\n", 1900 + tmp->tm_year, tmp->tm_mon+1, tmp->tm_mday, wd[tmp->tm_wday],tmp->tm_hour,tmp->tm_min,tmp->tm_sec); fprintf(ft,"サイズは横%dx縦%d  打ち切りタイム=%d秒\n",yokomax,tatemax,speed); fprintf(ft,"タイトルは「%s」\n",msg); fclose(ft); } gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } mapflg=0; for(i=0;i<=kk;i++){ ffts[i]=00; ffys[i]=00; fftu[i]=0; ffyu[i]=0; } REPEAT: point1x(); point2x(); point3(); point4a(); maperr=0; if(fincount()==1) goto FIN; if(speed==5){ /* esfs=0; esfu=240000; TT10=12; mainz(); if(fincount()==1) goto FIN; */ esfs=0; esfu=280000; TT10=14; mainz(); if(fincount()==1) goto FIN; esfs=0; esfu=520000; TT10=12; mainz(); if(fincount()==1) goto FIN; /* esfs=0; esfu=940000; TT10=10; mainz(); if(fincount()==1) goto FIN; esfs=1; esfu=700000; TT10=10; mainz(); if(fincount()==1) goto FIN; esfs=3; esfu=200000; TT10=10; mainz(); if(fincount()==1) goto FIN; if(maperr==1) goto FIN; esfs=6; esfu=500000; TT10=10; mainz(); if(fincount()==1) goto FIN; if(tatemax<=55&&yokomax<=55) goto DO_KATEI; esfs=13; esfu=000000; TT10=7; mainz(); if(fincount()==1) goto FIN; esfs=20; esfu=000000; TT10=7; mainz(); if(fincount()==1) goto FIN; if(tatemax<=65&&yokomax<=65) goto DO_KATEI; esfs=40; esfu=0; TT10=7; mainz(); if(fincount()==1) goto FIN; esfs=60; esfu=0; TT10=7; mainz(); if(fincount()==1) goto FIN; esfs=80; esfu=0; TT10=7; mainz(); if(fincount()==1) goto FIN; esfs=100; esfu=0; TT10=7; mainz(); if(fincount()==1) goto FIN; */ } else{ esfs=speed; esfu=0; TT10=7; mainz(); if(fincount()==1) goto FIN; } DO_KATEI: /* for(i=1;i<=yokomax;i++){ if(iy[i][KFIN]==00) printi('y',i); } for(i=1;i<=tatemax;i++){ if(it[i][KFIN]==00) printi('t',i); } */ tynuri=tatemax*yokomax-nuri; startbb=lastbb=gcdatabb=gc2bb=infobb=backboard_create(); startcc=lastcc=gcdatacc=gc2cc=infocc=backboard_create(); startbb->no=0; startbb->jotai=100; movedata(startbb->data_black,data,startbb->ht_black,ht,startbb->hy_black,hy,startbb->it_black,it,startbb->iy_black,iy); movedata(startbb->data_white,data,startbb->ht_white,ht,startbb->hy_white,hy,startbb->it_white,it,startbb->iy_white,iy); movedata2(startbb->sst_black,sst,startbb->ssy_black,ssy,startbb->eet_black,eet,startbb->eey_black,eey); movedata2(startbb->sst_white,sst,startbb->ssy_white,ssy,startbb->eet_white,eet,startbb->eey_white,eey); if(tatemax*yokomax-nuri<50){ mapflg=1; g_rgb(0x0000ff); g_text(20,20,"--nokori 50--"); nokori20(); mapflg=0; if(fincount()==1) goto FIN; } if(tatemax>380||yokomax>380) goto FIN; mapflg=1; katei1(); if(fincount()==1) goto FIN; i=katei3all(); if(i==10) goto FIN; if(fincount()==1) goto FIN; mapflg=1; katei2(); if(fincount()==1) goto FIN; g_rgb(0xffffff); g_fill(0,0,230,20); g_rgb(0x0000ff); g_text(20,20,"--nokori 30000--"); nokori20(); mapflg=0; if(fincount()==1) goto FIN; FIN: /*printi('y',14);*/ /* for(i=1;i<=yokomax;i++){ if(iy[i][KFIN]==00) printi('y',i); } for(i=1;i<=tatemax;i++){ if(it[i][KFIN]==00) printi('t',i); } */ mapflg=0; g_rgb(0xffffff); g_fill(0,0,230,30); if(notimesave==1&&tt1s>0){ pt1s=tt1s; pt1u=0;} else{ gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } } sprintf(sss,"TIME=%4ld.%06ld(sec)",pt1s,pt1u); g_rgb(0xffffff); g_fill(180,0,140,13); g_rgb(0xff0000); g_text(200,13,sss); sprintf(sss,"Dot=%ld/%ld",nuri,(long)tatemax*yokomax); g_rgb(0xffffff); g_fill(825,13,99,13); g_rgb(0x0000ff); g_text(830,26,sss); if(argc<2) strcpy(filet,test); else strcpy(filet,ar2); strcat(filet,"1.mt"); if(notimesave==0){ ft = fopen(filet,"w"); if(ft==NULL){ printf("ファイル名が %s 失敗\n",filet); exit(0); } fprintf(ft,"%4ld.%06ld",pt1s,pt1u); fclose(ft); } fincount(); if(scount == tatemax+yokomax){ /* printf("完全燃焼!\n"); */ g_rgb(0x0000ff); g_text(20,20,"This Result is Very Good !"); if(pt1s>=15){ oldsec=nowsec=(int)(pt1s/BYO)+1; if(notimesave==0) mno_save1(); } } else{ /* printf("不完全燃焼\n"); */ g_rgb(0xff0000); g_text(20,20,"This Result is Bad Result."); oldsec=nowsec=(int)(pt1s/BYO); if(oldsec==0) oldsec=nowsec=1; mno_save1(); } if(argc<2) strcpy(filek,test); else strcpy(filek,ar2); strcat(filek,"m.karte"); ft = fopen(filek,"a"); if(ft==NULL){ printf("ファイル名が %s 失敗\n",filek); exit(0); } if(pt1s<10) fprintf(ft,"解析タイム=%4ld.%06ld秒  dot=%ld",pt1s,pt1u,nuri); fincount(); if(scount == tatemax+yokomax) fprintf(ft," 解析成功!\n"); else fprintf(ft," 解析失敗!\n"); fclose(ft); nuri=0; for(i=1;i<=yokomax;i++){ for(j=1;j<=tatemax;j++){ if(data[j][i] == 0 ) box( (kymax+j)*dot1+20,(ktmax+i)*dot1+30,dot2,18); if(data[j][i] == 100){ box( (kymax+j)*dot1+20,(ktmax+i)*dot1+30,dot2,5);nuri++;} if(data[j][i] == 200){ box( (kymax+j)*dot1+20,(ktmax+i)*dot1+30,dot2,6);nuri++;} } } sprintf(sss,"Dot=%ld/%ld",nuri,(long)tatemax*yokomax); g_rgb(0xffffff); g_fill(825,13,99,13); g_rgb(0x0000ff); g_text(830,26,sss); while(1){ hantei(); } } void mainz(){ int i,j,k,l,m,n; if(maperr==1) return; f2flg=0; for(i=0;i<=kk;i++){ newt[i]=100; newy[i]=100; newt2[i]=100; newy2[i]=100; newt3[i]=100; newy3[i]=100; if(ffts[i]>esfs||(ffts[i]==esfs&&fftu[i]>esfu)){ ffts[i]=fftu[i]=0; } if(ffys[i]>esfs||(ffys[i]==esfs&&ffyu[i]>esfu)){ ffys[i]=ffyu[i]=0; } } /*eflag6=0;*/ newz2(); eflag=2; while(eflag>0){ eflag=0; sprintf(sss,"Dot=%ld/%ld",nuri,(long)tatemax*yokomax); g_rgb(0xffffff); g_fill(825,13,99,13); g_rgb(0x0000ff); g_text(830,26,sss); USKIP0: // 0000 eflag5=2; eflag6=0; while(eflag5){ M201: eflag5=0; gettime(); st4s=getsec; st4u=getusec; pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } nowvsec=pt1s; if(oldvsec!=nowvsec){ oldvsec=nowvsec; sprintf(sss,"TIME=%4ld.%06ld(sec)",pt1s,pt1u); g_rgb(0xffffff); g_fill(180,0,140,13); g_rgb(0xff0000); g_text(200,13,sss); sprintf(sss,"loop=%d",loop1); g_rgb(0xffffff); g_fill(700,0,240,13); g_rgb(0x0000ff); g_text(720,13,sss); sprintf(sss,"fas=%3ld",fasi); g_rgb(0xffffff); g_fill(918,0,100,13); g_rgb(0x0000ff); g_text(920,13,sss); sprintf(sss,"TYPE-S %d",jcnt); g_rgb(0xffffff); g_fill(938,13,100,13); g_rgb(0x0000ff); g_text(940,26,sss); sprintf(sss,"Dot=%ld/%ld",nuri,(long)tatemax*yokomax); g_rgb(0xffffff); g_fill(825,13,99,13); g_rgb(0x0000ff); g_text(830,26,sss); } eflag5=2; while(eflag5){ M2011: eflag5=0; for(i=1;i<=yokomax;i++){ pchecky2(i); qchecky2(i); if(iy[i][KFIN]==0&&newy3[i]==100){ lse(i,'y'); newy3[i]=40; for(j=kmin;j<=kmax;j++){ sum1iy( i,j,j,ssy[i][j],eey[i][j]); batu1iy(i,j,j,ssy[i][j],eey[i][j]); } } } for(i=1;i<=tatemax;i++){ pcheckt2(i); qcheckt2(i); if(it[i][KFIN]==0&&newt3[i]==100){ lse(i,'t'); newt3[i]=40; for(j=kmin;j<=kmax;j++){ sum1it( i,j,j,sst[i][j],eet[i][j]); batu1it(i,j,j,sst[i][j],eet[i][j]); } } } } /* 2-00a*/ //M201: M2014: if(fincount()==1) return; newz2(); newf=1; j=0; info=start; while(info&&j<500){ if(info->k<=TT10){ if(info->ty=='t') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffts[info->i],fftu[info->i],info->k); if(info->ty=='y') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffys[info->i],ffyu[info->i],info->k); g_rgb(0xcc0033); g_text(855,80+j*10,sss); } eflag2=0; fasj=j; if(info->ty=='t'&&info->k<=TT10){ uucheckt(info->i); if(maperr==1) return;} if(info->ty=='y'&&info->k<=TT10){ uuchecky(info->i); if(maperr==1) return;} if(eflag2>0&&info->k<=TT10){ g_rgb(0x00cc33); sprintf(sss," + %ld",nuri); g_text(972,80+j*10,sss); } else if(eflag2==0&&info->k<=TT10){ g_rgb(0x999933); sprintf(sss," %ld",nuri); g_text(972,80+j*10,sss); } j++; info=info->next; } if(eflag!=0) goto USKIPP; /* 2-02a*/ newz2(); newf=1; j=0; info=start; while(info&&j<500){ if(j>S60){ goto M201; } if(info->ty=='t') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffts[info->i],fftu[info->i],info->k); if(info->ty=='y') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffys[info->i],ffyu[info->i],info->k); g_rgb(0xcc0033); g_text(855,80+j*10,sss); eflag2=0; fasj=j; if(info->ty=='t'){ uucheckt(info->i); if(maperr==1) return;} if(info->ty=='y'){ uuchecky(info->i); if(maperr==1) return;} if(eflag2>0){ g_rgb(0x00cc33); sprintf(sss," + %ld",nuri); g_text(972,80+j*10,sss); } else if(eflag2==0){ g_rgb(0x999933); sprintf(sss," %% %ld",nuri); g_text(972,80+j*10,sss); if(esfsnext; } if(eflag>0) goto USKIPP; ccheckt(); if(fincount()==1) return; cchecky(); if(fincount()==1) return; for(j=1;j<=yokomax;j++){ if(newy[j]==50) newy[j]=100; if(newy[j]==100) newy2[j]=100; } for(j=1;j<=tatemax;j++){ if(newt[j]==50) newt[j]=100; if(newt[j]==100) newt2[j]=100; } if(fincount()==1) return; for(j=1;j<=yokomax;j++){ newy3[j]=100; } for(j=1;j<=tatemax;j++){ newt3[j]=100; } /*2-1*/ jcnt++; M21: if(fincount()==1) return; gettime(); st4s=getsec; st4u=getusec; pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } nowvsec=pt1s; if(oldvsec!=nowvsec){ oldvsec=nowvsec; sprintf(sss,"TIME=%4ld.%06ld(sec)",pt1s,pt1u); g_rgb(0xffffff); g_fill(180,0,140,13); g_rgb(0xff0000); g_text(200,13,sss); sprintf(sss,"loop=%d",loop1); g_rgb(0xffffff); g_fill(700,0,240,13); g_rgb(0x0000ff); g_text(720,13,sss); sprintf(sss,"fas=%3ld",fasi); g_rgb(0xffffff); g_fill(918,0,100,13); g_rgb(0x0000ff); g_text(920,13,sss); sprintf(sss,"TYPE-A %d",jcnt); g_rgb(0xffffff); g_fill(938,13,100,13); g_rgb(0x0000ff); g_text(940,26,sss); sprintf(sss,"Dot=%ld/%ld",nuri,(long)tatemax*yokomax); g_rgb(0xffffff); g_fill(825,13,99,13); g_rgb(0x0000ff); g_text(830,26,sss); } eflag5=2; while(eflag5){ eflag5=0; for(i=1;i<=yokomax;i++){ pchecky2(i); qchecky2(i); if(iy[i][KFIN]==0&&newy3[i]==100){ lse(i,'y'); newy3[i]=40; for(j=kmin;j<=kmax;j++){ sum1iy( i,j,j,ssy[i][j],eey[i][j]); batu1iy(i,j,j,ssy[i][j],eey[i][j]); } } } for(i=1;i<=tatemax;i++){ pcheckt2(i); qcheckt2(i); if(it[i][KFIN]==0&&newt3[i]==100){ lse(i,'t'); newt3[i]=40; for(j=kmin;j<=kmax;j++){ sum1it( i,j,j,sst[i][j],eet[i][j]); batu1it(i,j,j,sst[i][j],eet[i][j]); } } } } /* 2-1*/ newz2(); newf=1; j=0; info=start; while(info&&j<500){ if(info->k<=TT10){ if(info->ty=='t') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffts[info->i],fftu[info->i],info->k); if(info->ty=='y') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffys[info->i],ffyu[info->i],info->k); g_rgb(0xcc0033); g_text(855,80+j*10,sss); } eflag2=0; fasj=j; if(info->ty=='t'&&info->k<=TT10){ uuacheckt(info->i);if(maperr==1) return;} if(info->ty=='y'&&info->k<=TT10){ uuachecky(info->i);if(maperr==1) return;} if(eflag2>0&&info->k<=TT10){ g_rgb(0x00cc33); sprintf(sss," + %ld",nuri); g_text(972,80+j*10,sss); } else if(eflag2==0&&info->k<=TT10){ g_rgb(0x999933); sprintf(sss," %ld",nuri); g_text(972,80+j*10,sss); } j++; info=info->next; } if(eflag>100) goto USKIPP; /* 2-2*/ newz2(); newf=1; j=0; info=start; while(info&&j<500&&eflag<=TT25){ if(j>S40){ goto M21; } if(info->ty=='t') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffts[info->i],fftu[info->i],info->k); if(info->ty=='y') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffys[info->i],ffyu[info->i],info->k); g_rgb(0xcc0033); g_text(855,80+j*10,sss); eflag2=0; fasj=j; if(info->ty=='t'){ uuacheckt(info->i);if(maperr==1) return;} if(info->ty=='y'){ uuachecky(info->i);if(maperr==1) return;} if(eflag2>0){ g_rgb(0x00cc33); sprintf(sss," + %ld",nuri); g_text(972,80+j*10,sss); } else if(eflag2==0){ g_rgb(0x999933); sprintf(sss," %% %ld",nuri); g_text(972,80+j*10,sss); if(esfsnext; } if(eflag>0) goto USKIPP; ccheckt(); if(fincount()==1) return; cchecky(); if(fincount()==1) return; } /* 2-4*/ USKIP: if(fincount()==1) return; for(j=1;j<=yokomax;j++){ if(newy[j]==50) newy[j]=100; if(newy[j]==100) newy2[j]=100; } for(j=1;j<=tatemax;j++){ if(newt[j]==50) newt[j]=100; if(newt[j]==100) newt2[j]=100; } if(fincount()==1) return; for(j=1;j<=yokomax;j++){ newy3[j]=100; } for(j=1;j<=tatemax;j++){ newt3[j]=100; } /*2-11*/ eflag5=2; while(eflag5){ M211: eflag5=0; gettime(); st4s=getsec; st4u=getusec; pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } nowvsec=pt1s; if(oldvsec!=nowvsec){ oldvsec=nowvsec; sprintf(sss,"TIME=%4ld.%06ld(sec)",pt1s,pt1u); g_rgb(0xffffff); g_fill(180,0,140,13); g_rgb(0xff0000); g_text(200,13,sss); sprintf(sss,"loop=%d",loop1); g_rgb(0xffffff); g_fill(700,0,240,13); g_rgb(0x0000ff); g_text(720,13,sss); sprintf(sss,"fas=%3ld",fasi); g_rgb(0xffffff); g_fill(918,0,100,13); g_rgb(0x0000ff); g_text(920,13,sss); sprintf(sss,"TYPE-B %d",jcnt); g_rgb(0xffffff); g_fill(938,13,100,13); g_rgb(0x0000ff); g_text(940,26,sss); sprintf(sss,"Dot=%ld/%ld",nuri,(long)tatemax*yokomax); g_rgb(0xffffff); g_fill(825,13,99,13); g_rgb(0x0000ff); g_text(830,26,sss); } eflag5=2; while(eflag5){ eflag5=0; for(i=1;i<=yokomax;i++){ pchecky2(i); qchecky2(i); if(iy[i][KFIN]==0&&newy3[i]==100){ lse(i,'y'); newy3[i]=40; for(j=kmin;j<=kmax;j++){ sum1iy( i,j,j,ssy[i][j],eey[i][j]); batu1iy(i,j,j,ssy[i][j],eey[i][j]); } } } for(i=1;i<=tatemax;i++){ pcheckt2(i); qcheckt2(i); if(it[i][KFIN]==0&&newt3[i]==100){ lse(i,'t'); newt3[i]=40; for(j=kmin;j<=kmax;j++){ sum1it( i,j,j,sst[i][j],eet[i][j]); batu1it(i,j,j,sst[i][j],eet[i][j]); } } } } newz2(); newf=1; j=0; info=start; while(info&&j<500){ if(info->k<=TT10){ if(info->ty=='t') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffts[info->i],fftu[info->i],info->k); if(info->ty=='y') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffys[info->i],ffyu[info->i],info->k); g_rgb(0xcc0033); g_text(855,80+j*10,sss); } eflag2=0; fasj=j; if(info->ty=='t'&&info->k<=TT10){ uu0checkt(info->i);if(maperr==1) return;} if(info->ty=='y'&&info->k<=TT10){ uu0checky(info->i);if(maperr==1) return;} if(eflag2>0&&info->k<=TT10){ g_rgb(0x00cc33); sprintf(sss," + %ld",nuri); g_text(972,80+j*10,sss); } else if(eflag2==0&&info->k<=TT10){ g_rgb(0x999933); sprintf(sss," %ld",nuri); g_text(972,80+j*10,sss); } j++; info=info->next; } /* 2-12*/ newz2(); newf=1; j=0; info=start; while(info&&j<500&&eflag<=TT20){ if(j>S40){ goto M211; } if(info->ty=='t') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffts[info->i],fftu[info->i],info->k); if(info->ty=='y') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffys[info->i],ffyu[info->i],info->k); g_rgb(0xcc0033); g_text(855,80+j*10,sss); eflag2=0; fasj=j; if(info->ty=='t'){ uu0checkt(info->i);if(maperr==1) return;} if(info->ty=='y'){ uu0checky(info->i);if(maperr==1) return;} if(eflag2>0){ g_rgb(0x00cc33); sprintf(sss," + %ld",nuri); g_text(972,80+j*10,sss); } else if(eflag2==0){ g_rgb(0x999933); sprintf(sss," %% %ld",nuri); g_text(972,80+j*10,sss); if(esfsnext; } if(eflag5<=TT5) return; } /* 2-14*/ USKIPP: if(fincount()==1) return; for(j=1;j<=yokomax;j++){ if(newy[j]==50) newy[j]=100; } for(j=1;j<=tatemax;j++){ if(newt[j]==50) newt[j]=100; } if(fincount()==1) return; if(maperr==1) return; ccheckt(); if(fincount()==1) return; if(maperr==1) return; cchecky(); if(fincount()==1) return; if(maperr==1) return; v2it(); if(fincount()==1) return; if(maperr==1) return; v2iy(); if(fincount()==1) return; if(maperr==1) return; f2flg=1; loop1++; /* pchecky2(14); if(hy[14][1]!=255) printi('y',14); */ } } void mainy(){ int i,j,k,l,m,n; f2flg=0; for(i=0;i<=kk;i++){ newt[i]=100; newy[i]=100; newt2[i]=100; newy2[i]=100; newt3[i]=100; newy3[i]=100; if(ffts[i]>esfs||(ffts[i]==esfs&&fftu[i]>esfu)){ ffts[i]=fftu[i]=0; } if(ffys[i]>esfs||(ffys[i]==esfs&&ffyu[i]>esfu)){ ffys[i]=ffyu[i]=0; } } /*eflag6=0;*/ newz2(); eflag=2; while(eflag>0){ eflag=0; sprintf(sss,"Dot=%ld/%ld",nuri,(long)tatemax*yokomax); g_rgb(0xffffff); g_fill(825,13,99,13); g_rgb(0x0000ff); g_text(830,26,sss); // 0000 eflag5=2; eflag6=0; while(eflag5){ M201Y: eflag5=0; gettime(); st4s=getsec; st4u=getusec; pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } nowvsec=pt1s; if(oldvsec!=nowvsec){ oldvsec=nowvsec; sprintf(sss,"TIME=%4ld.%06ld(sec)",pt1s,pt1u); g_rgb(0xffffff); g_fill(180,0,140,13); g_rgb(0xff0000); g_text(200,13,sss); sprintf(sss,"Dot=%ld/%ld",nuri,(long)tatemax*yokomax); g_rgb(0xffffff); g_fill(825,13,99,13); g_rgb(0x0000ff); g_text(830,26,sss); sprintf(sss,"loop=%d",loop1); g_rgb(0xffffff); g_fill(700,0,240,13); g_rgb(0x0000ff); g_text(720,13,sss); sprintf(sss,"fas=%3ld",fasi); g_rgb(0xffffff); g_fill(918,0,100,13); g_rgb(0x0000ff); g_text(920,13,sss); sprintf(sss,"TYPE-K %d",jcnt); g_rgb(0xffffff); g_fill(938,13,100,13); g_rgb(0x0000ff); g_text(940,26,sss); } /* 2-00a*/ //M201: M2014Y: if(fincount()==1) return; newz2(); newf=1; j=0; info=start; while(info&&j<500){ if(info->k<=TT10){ if(info->ty=='t') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffts[info->i],fftu[info->i],info->k); if(info->ty=='y') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffys[info->i],ffyu[info->i],info->k); g_rgb(0xcc0033); g_text(855,80+j*10,sss); } eflag2=0; fasj=j; if(info->ty=='t'&&info->k<=TT10){ uu0checkt(info->i);if(maperr==1) return; } if(info->ty=='y'&&info->k<=TT10){ uu0checky(info->i);if(maperr==1) return; } if(eflag2>0&&info->k<=TT10){ g_rgb(0x00cc33); sprintf(sss," + %ld",nuri); g_text(972,80+j*10,sss); } else if(eflag2==0&&info->k<=TT10){ g_rgb(0x999933); sprintf(sss," %ld",nuri); g_text(972,80+j*10,sss); } j++; info=info->next; } if(eflag!=0) goto USKIPPY; /* 2-02a*/ newz2(); newf=1; j=0; info=start; while(info&&j<500){ if(j>S60){ goto M201Y; } if(info->ty=='t') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffts[info->i],fftu[info->i],info->k); if(info->ty=='y') sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffys[info->i],ffyu[info->i],info->k); g_rgb(0xcc0033); g_text(855,80+j*10,sss); eflag2=0; fasj=j; if(info->ty=='t'){ uu0checkt(info->i);if(maperr==1) return; } if(info->ty=='y'){ uu0checky(info->i);if(maperr==1) return; } if(eflag2>0){ g_rgb(0x00cc33); sprintf(sss," + %ld",nuri); g_text(972,80+j*10,sss); } else if(eflag2==0){ g_rgb(0x999933); sprintf(sss," %% %ld",nuri); g_text(972,80+j*10,sss); if(esfsnext; } } USKIPPY: if(fincount()==1) return; ccheckt(); if(fincount()==1) return; cchecky(); if(fincount()==1) return; scheckt(); if(fincount()==1) return; schecky(); if(fincount()==1) return; /* bcheckt(); if(fincount()==1) return; bchecky(); if(fincount()==1) return; */ v2it(); v2iy(); if(fincount()==1) return; f2flg=1; loop1++; /* pchecky2(14); if(hy[14][1]!=255) printi('y',14); */ } } void newz2(){ int i,k1,s1,p,im=0,in=0; struct line *karistt,*karilast; /* info=start; while(info){ if(info->ty=='t') ffts[info->i]=info->fas; if(info->ty=='y') ffys[info->i]=info->fas; if(info->ty=='t') fftu[info->i]=info->fau; if(info->ty=='y') ffyu[info->i]=info->fau; info=info->next; } */ gcdata=NULL; if(start){ info=start; while(info->next){ temp=info->next; free(info); info=temp; } } start=NULL; gcdata2=NULL; if(start2){ info2=start2; while(info2->next){ temp2=info2->next; free(info2); info2=temp2; } } start2=NULL; for(i=1;i<=tatemax;i++){ pcheckt2(i); qcheckt2(i); if(it[i][KFIN]==0){ lse(i,'t'); k1=kmax-kmin+1; if(newt2[i]==100&&k1>0){ if(im==0){ start=stt=gcdata=node_create(); im++; gcdata->fas=ffts[i]; gcdata->fau=fftu[i]; gcdata->ty='t'; gcdata->k=k1; gcdata->i=i; } else{ gcdata->next=node_create(); gcdata=gcdata->next; gcdata->fas=ffts[i]; gcdata->fau=fftu[i]; gcdata->ty='t'; gcdata->k=k1; gcdata->i=i; } } } } for(i=1;i<=yokomax;i++){ pchecky2(i); qchecky2(i); if(iy[i][KFIN]==0){ lse(i,'y'); k1=kmax-kmin+1; if(newy2[i]==100&&k1>0){ if(im==0){ start=stt=gcdata=node_create(); im++; gcdata->fas=ffys[i]; gcdata->fau=ffyu[i]; gcdata->ty='y'; gcdata->k=k1; gcdata->i=i; } else{ gcdata->next=node_create(); gcdata=gcdata->next; gcdata->fas=ffys[i]; gcdata->fau=ffyu[i]; gcdata->ty='y'; gcdata->k=k1; gcdata->i=i; } } } } /* 昇順 */ stt=start; info=start; last=NULL; im=0; while(info){ start =info->next; info->next=NULL; stt =shojun(info); info =start; } start=stt; if(mapflg==0){ g_rgb(0xffffff); g_fill(850,70,200,500); sprintf(sss,"b)esf=%3ld.%06ld",esfs,esfu); g_rgb(0xffffff); g_fill(850,38,160,13); g_rgb(0x0000ff); g_text(855,50,sss); info=start; im=0; while(info){ if(info->ty=='t'){ sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffts[info->i],fftu[info->i],info->k); g_rgb(0x0000ff); g_text(855,80+im*10,sss); im++; } if(info->ty=='y'){ sprintf(sss,"%c %03d %3ld.%06ld %3d",info->ty,info->i,ffys[info->i],ffyu[info->i],info->k); g_rgb(0x0000ff); g_text(855,80+im*10,sss); im++; } info=info->next; } fasi=im; } } int asc11(char a){ if('0'<=a&&a<='9') return a-'0'; else if('A'<=a&&a<='F') return a-'A'+10; else if('a'<=a&&a<='f') return a-'a'+10; } void gettime(){ struct timeval tv; gettimeofday(&tv,NULL); getsec=tv.tv_sec; getusec=tv.tv_usec; } static char chr_1[15]={ 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0 }; static char chr_2[15]={ 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2 }; static char chr_3[15]={ 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2 }; static char chr_4[15]={ 2, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 2, 0, 0, 2 }; static char chr_5[15]={ 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2 }; static char chr_6[15]={ 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2 }; static char chr_7[15]={ 2, 2, 2, 2, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2 }; static char chr_8[15]={ 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2 }; static char chr_9[15]={ 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2 }; static char chr_0[15]={ 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2 }; void g_dot(int x, int y){ XDrawLine(dpy,win,gc,x,y,x,y); XFlush(dpy); } void g_text(int x, int y,char *str){ XDrawString(dpy,win,gc,x,y,str,strlen(str)); XFlush(dpy); } void g_line(int x0, int y0, int x1, int y1){ XDrawLine(dpy,win,gc,x0,y0,x1,y1); XFlush(dpy); } void g_rgb(long iro){ XColor xc; xc.red = (iro&0xff0000)/256; xc.green = (iro&0x00ff00); xc.blue = (iro&0x0000ff)*256; XAllocColor(dpy,DefaultColormap(dpy,screen),&xc); XSetForeground(dpy,gc,xc.pixel); XFlush(dpy); } void g_fill(int x0,int y0, int wid, int hei){ XFillRectangle(dpy,win,gc,x0,y0,wid, hei); XFlush(dpy); } void g_box(int x0, int y0, int wid, int hei){ XDrawRectangle(dpy,win,gc,x0,y0,wid, hei); XFlush(dpy); } void g_clear(){ g_rgb(0xffffff); XFillRectangle(dpy,win,gc,0,0,win_width, win_height); g_rgb(0x000000); XFlush(dpy); } void first(){ dpy = XOpenDisplay( NULL ); /* Xサーバに接続する */ screen = DefaultScreen( dpy ); /* スクリーン設定 */ win = XCreateSimpleWindow( /* ウィンドウを開く */ dpy, /* Xサーバ */ RootWindow(dpy,screen), /* 親ウィンドウ */ 0, 0, /* 表示時の左上隅の座標 x, y */ win_width, win_height, /* ウィンドウの幅と高さ */ 1, BlackPixel(dpy,screen),/* ボーダーの幅と色 */ WhitePixel(dpy,screen) /* ウィンドウの背景色 */ ); XSelectInput( dpy, win, ExposureMask|KeyPressMask|StructureNotifyMask); XMapWindow( dpy, win ); /* ウィンドウのマッピング */ gc = DefaultGC( dpy, screen ); /* グラフィックコンテキストの設定 */ XSetForeground( dpy, gc, BlackPixel(dpy,screen) ); /* 描画色設定 */ atom1 = XInternAtom( dpy, "WM_PROTOCOLS", False ); atom2 = XInternAtom( dpy, "WM_DELETE_WINDOW", False ); XSetWMProtocols( dpy, win, &atom2, 1 ); } void hantei(){ int i,j; XNextEvent( dpy, &event ); switch( event.type ){ case Expose: /* XDrawLine( dpy, win, gc, 0, 0, win_width, win_height ); /* 線を描く */ /* XFlush( dpy ); /* バッファのフラッシュ */ break; case ConfigureNotify: XGetGeometry( dpy, win, &root, &dummy, &dummy, &win_width, &win_height, &dummy, &dummy ); /* XDrawLine( dpy, win, gc, 0, 0, win_width, win_height ); /* 線を描く */ /* XFlush( dpy ); /* バッファのフラッシュ */ break; case KeyPress: key_sym = XKeycodeToKeysym( dpy, event.xkey.keycode, 0 ); if( key_sym == XK_Escape ){ XDestroyWindow( dpy, win ); } if( key_sym == XK_Up ){ XDestroyWindow( dpy, win ); } if( key_sym == XK_Down ){ XDestroyWindow( dpy, win ); } if( key_sym == XK_Right ){ XDestroyWindow( dpy, win ); } if( key_sym == XK_Left ){ XDestroyWindow( dpy, win ); } if(0x20<=key_sym&&key_sym <= 0x7f&&key_sym != 'q'&&key_sym != 'Q'){ for(i=1;i<=tatemax;i++){ for(j=1;j<=yokomax;j++){ if(data[i][j] == 100) box( (kymax+i)*dot1+20,(ktmax+j)*dot1+30,dot2,5); if(data[i][j] == 200) box( (kymax+i)*dot1+20,(ktmax+j)*dot1+30,dot2,6); } } sprintf(sss,"TIME=%4ld.%06ld(sec)",pt1s,pt1u); g_rgb(0xffffff); g_fill(180,0,140,13); g_rgb(0xff0000); g_text(200,13,sss); sprintf(sss,"Dot=%ld/%ld",nuri,(long)tatemax*yokomax); g_rgb(0xffffff); g_fill(825,13,99,13); g_rgb(0x0000ff); g_text(830,26,sss); for(i=1;i<=yokomax;i++){ for(j=1;j<=iy[i][KKK];j++){ vmark(i,j,'y',iy[i][j]); } } for(i=1;i<=tatemax;i++){ for(j=1;j<=it[i][KKK];j++){ vmark(i,j,'t',it[i][j]); } } } if( key_sym == 'q'||key_sym == 'Q' ){ XDestroyWindow( dpy, win ); } if( key_sym == XK_Tab){ XDestroyWindow( dpy, win ); } break; case ClientMessage: if( event.xclient.message_type == atom1 && event.xclient.data.l[0] == atom2 ){ XDestroyWindow( dpy, win ); } break; case DestroyNotify: XCloseDisplay( dpy ); exit(0); break; default: ; } } void mark(int i, int j, char yt,unsigned char val){ if(yt == 't') ht[i][j]=val; if(yt == 'y') hy[i][j]=val; if(yokomax<=25 && tatemax<=40){ if(yt == 't'&&ht5[i][j]!=val){ ht[i][j]=val; ht5[i][j]=val; if(val==1){ pr_10x(it[i][j],(kymax+i)*dot1+23,j*dot1+30 ,1); } if(val==5){ pr_10x(it[i][j],(kymax+i)*dot1+23,j*dot1+30 ,2); } if(val==255){ pr_10x(it[i][j],(kymax+i)*dot1+23,j*dot1+30 ,3); } } if(yt == 'y'&&hy5[i][j]!=val){ hy[i][j]=val; hy5[i][j]=val; if(val==1){ pr_10x(iy[i][j],j*dot1+20,(ktmax+i)*dot1+33,1);} if(val==5){ pr_10x(iy[i][j],j*dot1+20,(ktmax+i)*dot1+33,2); } if(val==255){ pr_10x(iy[i][j],j*dot1+20,(ktmax+i)*dot1+33,3); } } } } void vmark(int i, int j, char yt,int val){ if(yokomax<=25 && tatemax<=40){ if(yt == 't'){ pr_10x(val,(kymax+i)*dot1+23,j*dot1+30 ,3); } if(yt == 'y'){ pr_10x(val,j*dot1+20, (ktmax+i)*dot1+33,3); } } } int map(int i, int l, char yt,int val){ int da,dflag=0,j,k,m; char mes1[24],mes2[24],ss[10]; char ttt[300],tt2[300],tt3[300]; FILE *ft; if(yt == 't'){ /* if(i==27 && l==3 && val==200) while(1) hantei(); if(i==11 && l==21 && val==200) while(1) hantei(); */ da=data[i][l]; if(data[i][l]==0){ newt2[i]=100; newy2[l]=100; newt3[i]=100; newy3[l]=100; newt[i]=100; newy[l]=100; oldt[i]=100; oldy[l]=100; nuri++; } if(da == 100 && val==200) dflag=1; if(da == 200 && val==100) dflag=1; if(da == 0 && val==200){ eflag++;eflag2++;eflag3++;eflag4++;eflag5++;eflag6++; } if(da == 0 && val==100){ eflag++;eflag2++;eflag3++;eflag4++;eflag5++;eflag6++; } if(dflag==0){ data[i][l]=val; if(val == 100) box( (kymax+i)*dot1+20,(ktmax+l)*dot1+30,dot2,5); if(val == 200) box( (kymax+i)*dot1+20,(ktmax+l)*dot1+30,dot2,6); } else{ if(mapflg==1){ maperr=1; return 1;} errorbox( (kymax+i)*dot1+20,(ktmax+l)*dot1+30,dot2); if(da ==100) strcpy(mes1,"塗りつぶす(Q=100)"); if(da ==200) strcpy(mes1,"バツ確定(x=200)"); if(val==100) strcpy(mes2,"塗りつぶす(Q=100)"); if(val==200) strcpy(mes2,"バツ確定(x=200)"); printf("データ入力に間違いがないか、もう一度お確かめ下さい\n"); printf("横が %d 縦が %d で %s から %s になってエラー\n", i,l,mes1,mes2); g_rgb(0xffffff); g_fill(180,0,430,30); g_rgb(0xff0000); g_text(20,20,"ERROR !"); k=iy[l][KKK]; strcpy(sss,"*y"); strcpy(tt2,"*y"); sprintf(ttt,"%03d ",l); strcat(sss,ttt); strcat(tt2,ttt); for(j=1;j<=k;j++){ if(j==1) sprintf(ttt,"%d",iy[l][j]); else sprintf(ttt,",%d",iy[l][j]); strcat(sss,ttt); strcat(tt2,ttt); } k=it[i][KKK]; strcat(sss," *t"); strcpy(tt3,"*t"); sprintf(ttt,"%03d ",i); strcat(sss,ttt); strcat(tt3,ttt); for(j=1;j<=k;j++){ if(j==1) sprintf(ttt,"%d",it[i][j]); else sprintf(ttt,",%d",it[i][j]); strcat(sss,ttt); strcat(tt3,ttt); } /* sprintf(sss,"x=%d y=%d %s %s",i,l,mes1,mes2); */ g_text(200,13,tt2); g_text(200,26,tt3); strcpy(ttt,sss); gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } /* sprintf(sss,"TIME=%4.2f(sec)",pt1); g_text(200,13,sss); */ if(argc1<2) strcpy(filek,test); else strcpy(filek,ar2); strcat(filek,"m.karte"); ft = fopen(filek,"a"); if(ft==NULL){ printf("ファイル名が %s 失敗\n",filek); exit(0); } fprintf(ft,"\n解析タイム=%4ld.%06ld秒  dot=%ld  打込みミスか?エラーが出ました\n",pt1s,pt1u,nuri); fprintf(ft,"%s\n",tt2); fprintf(ft,"%s\n",tt3); fclose(ft); while(1) hantei(); exit(0); } } if(yt == 'y'){ /* if(l==27 && i==3 && val==200) while(1) hantei(); if(i==11 && l==21 && val==200) while(1) hantei(); */ da=data[l][i]; if(data[l][i]==0){ newt2[l]=100; newy2[i]=100; newt3[l]=100; newy3[i]=100; newt[l]=100; newy[i]=100; oldt[l]=100; oldy[i]=100; nuri++; } if(da == 100 && val==200) dflag=1; if(da == 200 && val==100) dflag=1; if(da == 0 && val==200){ eflag++;eflag2++;eflag3++;eflag4++;eflag5++;eflag6++; } if(da == 0 && val==100){ eflag++;eflag2++;eflag3++;eflag4++;eflag5++;eflag6++; } if(dflag==0){ data[l][i]=val; if(val == 100) box( (kymax+l)*dot1+20,(ktmax+i)*dot1+30,dot2,5); if(val == 200) box( (kymax+l)*dot1+20,(ktmax+i)*dot1+30,dot2,6); } else{ if(mapflg==1){ maperr=1; return 1;} errorbox( (kymax+l)*dot1+20,(ktmax+i)*dot1+30,dot2); if(da ==100) strcpy(mes1,"塗りつぶす(Q=100)"); if(da ==200) strcpy(mes1,"バツ確定(x=200)"); if(val==100) strcpy(mes2,"塗りつぶす(Q=100)"); if(val==200) strcpy(mes2,"バツ確定(x=200)"); printf("データ入力に間違いがないか、もう一度お確かめ下さい\n"); printf("横が %d 縦が %d で %s から %s になってエラー\n", l,i,mes1,mes2); g_rgb(0xffffff); g_fill(180,0,430,30); g_rgb(0xff0000); g_text(20,20,"ERROR !"); k=iy[i][KKK]; strcpy(sss,"*y"); strcpy(tt2,"*y"); sprintf(ttt,"%03d ",i); strcat(sss,ttt); strcat(tt2,ttt); for(j=1;j<=k;j++){ if(j==1) sprintf(ttt,"%d",iy[i][j]); else sprintf(ttt,",%d",iy[i][j]); strcat(sss,ttt); strcat(tt2,ttt); } k=it[l][KKK]; strcat(sss," *t"); strcpy(tt3,"*t"); sprintf(ttt,"%03d ",l); strcat(sss,ttt); strcat(tt3,ttt); for(j=1;j<=k;j++){ if(j==1) sprintf(ttt,"%d",it[l][j]); else sprintf(ttt,",%d",it[l][j]); strcat(sss,ttt); strcat(tt3,ttt); } /* sprintf(sss,"x=%d y=%d %s %s",l,i,mes1,mes2); */ g_text(200,13,tt2); g_text(200,26,tt3); strcpy(ttt,sss); gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } if(argc1<2) strcpy(filek,test); else strcpy(filek,ar2); strcat(filek,"m.karte"); ft = fopen(filek,"a"); if(ft==NULL){ printf("ファイル名が %s 失敗\n",filek); exit(0); } fprintf(ft,"\n解析タイム=%4ld.%06ld秒  dot=%ld  打込みミスか?エラーが出ました。\n",pt1s,pt1u,nuri); fprintf(ft,"%s\n",tt2); fprintf(ft,"%s\n",tt3); fclose(ft); while(1) hantei(); exit(0); } } } void ktymax(){ int i; ktmax=1; for(i=1;i<=tatemax;i++){ ktmax=max11(it[i][KKK],ktmax); } kymax=1; for(i=1;i<=yokomax;i++){ kymax=max11(iy[i][KKK],kymax); } } int fincount(){ int i,ret; scount=ret=0; for(i=1;i<=tatemax;i++){ if(it[i][KFIN] == 100){ scount++; box((kymax+i)*dot1+dot1/2+17,(ktmax+yokomax+2)*dot1+dot1/2+27,5,9); } } for(i=1;i<=yokomax;i++){ if(iy[i][KFIN] == 100){ scount++; box((kymax+tatemax+2)*dot1+dot1/2+17,(ktmax+i)*dot1+dot1/2+27,5,9); } } if(scount == tatemax+yokomax) ret=1; return ret; } void ksef(int i, char yt){ if(yt == 't'){ it[i][KSTART]=999; it[i][KEND] =998; it[i][KFIN] =100; } if(yt == 'y'){ iy[i][KSTART]=999; iy[i][KEND] =998; iy[i][KFIN] =100; } } void sum1it(int i, int kst, int ked, int lst, int led){ int j,l,s1,e1,sum; sum=0; for(j=kst;j<=ked;j++){ sum+= it[i][j]+1; } sum--; if(sum > led-lst+1){ printf("データがおかしいんと、ちゃいまっか 縦%d行",i); exit(0); } if(sum == led-lst+1){ s1=lst; for(j=kst;j<=ked;j++){ e1=s1+it[i][j]-1; for(l=s1; l<=e1; l++){ map(i,l,'t',100); if(maperr==1) return; } s1=e1+2; } goto SST1; } s1=lst; for(j=kst;j<=ked;j++){ e1 =s1+it[i][j]-1; for(l=s1; l<=e1; l++){ d[l]=j; } d[l]=0; s1=e1+2; } for(j=s1;j<=led;j++){ d[j]=0; } e1=led; for(j=ked;j>=kst;j--){ s1=e1-it[i][j]+1; for(l=s1; l<=e1; l++){ if(d[l] == j){ mark(i,j,'t',1); map(i,l,'t',100); if(maperr==1) return; } } e1=s1-2; } SST1:i=i; } void sum1iy(int i, int kst, int ked, int lst, int led){ int j,l,s1,e1,sum; sum=0; for(j=kst;j<=ked;j++){ sum+= iy[i][j]+1; } sum--; if(sum > led-lst+1){ printf("データがおかしいんと、ちゃいまっか 横%d行",i); exit(0); } if(sum == led-lst+1){ s1=lst; for(j=kst;j<=ked;j++){ e1=s1+iy[i][j]-1; for(l=s1; l<=e1; l++){ map(i,l,'y',100); if(maperr==1) return; } s1=e1+2; } goto SSY1; } s1=lst; for(j=kst;j<=ked;j++){ e1 =s1+iy[i][j]-1; for(l=s1; l<=e1; l++){ d[l]=j; } d[l]=0; s1=e1+2; } for(j=s1;j<=led;j++){ d[j]=0; } e1=led; for(j=ked;j>=kst;j--){ s1=e1-iy[i][j]+1; for(l=s1; l<=e1; l++){ if(d[l] == j){ mark(i,j,'y',1); map( i,l,'y',100); if(maperr==1) return; } } e1=s1-2; } SSY1:i=i; } void lse(int i, char yt){ int j,k,n,qsum,p,j1; if(yt == 't'){ kmck(i,'t'); k=it[i][KKK]; qsum=0; for(n=1; n=1 && p1&&data[i][le]==200) le--; } if(yt == 'y'){ kmck(i,'y'); k=iy[i][KKK]; qsum=0; for(n=1; n=1 && p1&&data[le][i]==200) le--; } } void kmck(int i,char yt){ int j,k; if(yt == 't'){ k=it[i][KKK]; for(j=1;j<=k;j++){ if(ht[i][j]==5 && j==it[i][KSTART]) it[i][KSTART]++; } for(j=k;j>=1;j--){ if(ht[i][j]==5 && j==it[i][KEND]) it[i][KEND]--; } kmin=it[i][KSTART]; kmax=it[i][KEND]; } if(yt == 'y'){ k=iy[i][KKK]; for(j=1;j<=k;j++){ if(hy[i][j]==5 && j==iy[i][KSTART]) iy[i][KSTART]++; } for(j=k;j>=1;j--){ if(hy[i][j]==5 && j==iy[i][KEND]) iy[i][KEND]--; } kmin=iy[i][KSTART]; kmax=iy[i][KEND]; } } void batu1it(int i, int kst, int ked, int lst, int led) { int min1,max1,pl,count,j,kc=0,l,k,m,p; min1=0; max1=0; pl=0; for(j=lst;j<=led;j++){ if(d[j]==100){ min1=j; goto BT1; } } BT1: for(j=led;j>=lst;j--){ if(d[j]==100){ max1=j; goto BT2; } } BT2: for(j=min1;j<=max1;j++){ if(d[j]!=100){ goto BT3; } } pl=max1-min1+1; if(min1==0 || max1==0) goto BT3; count=0; for(j=kst;j<=ked;j++){ if(it[i][j]>=pl){ kc=j; count++; } } if(count==1){ if( (max1-it[i][kc])+1 >lst && kc==kst){ m=max1-it[i][kc]; for(l=lst; l<=m; l++){ map(i,l,'t',200); if(maperr==1) return; } } if( (min1+it[i][kc])-1 <= led && kc==ked){ m=min1+it[i][kc]; for(l=m; l<=led; l++){ map(i,l,'t',200); if(maperr==1) return; } } } BT3:i=i; } void batu1iy(int i, int kst, int ked, int lst, int led) { int min1,max1,pl=0,count=0,j,k,kc=0,l,m,p; min1=0; max1=0; pl =0; for(j=lst;j<=led;j++){ if(d[j]==100){ min1=j; goto BY1; } } BY1: for(j=led;j>=lst;j--){ if(d[j]==100){ max1=j; goto BY2; } } BY2: for(j=min1;j<=max1;j++){ if(d[j]!=100){ goto BY3; } } pl=max1-min1+1; if(min1==0 || max1==0) goto BY3; count=0; for(j=kst;j<=ked;j++){ if(iy[i][j]>=pl){ kc=j; count++; } } if(count==1){ if( (max1-iy[i][kc]+1) >lst && kc==kst){ m=max1-iy[i][kc]; for(l=lst; l<=m; l++){ map(i,l,'y',200); if(maperr==1) return; } } if( (min1+iy[i][kc]-1) <= led && kc==ked){ m=min1+iy[i][kc]; for(l=m; l<=led; l++){ map(i,l,'y',200); if(maperr==1) return; } } } BY3:i=i; } void swe(int i,char yt){ int m,l; if(yt == 't'){ for(l=1; l<=yokomax; l++){ if(data[i][l] == 0){ map(i,l,'t',200); if(maperr==1) return;} } } if(yt == 'y'){ for(l=1; l<=tatemax; l++){ if(data[l][i] == 0){ map(i,l,'y',200); if(maperr==1) return; } } } } void pcheckt2(int i){ int j,k,l,km,m,p,ll[5],a,b,c,d,e; int n,aflag,lsum,lg,ax,bx; if(it[i][KFIN]==0){ fax1it(i,1,yokomax); k=it[i][KKK]; km=1; lg=0; ax=0; for(j=1;j<=mmax;j++){ if(fup[j]== 0 ){ bx=0; if(fup[j-1] == 1 && j-1>=1) bx++; if(fup[j+1] == 1 && j+1<=mmax) bx++; if(lg==0) ax=bx; if(lg-ax < fdw[j]-bx) ax=bx; lg=max11(lg,fdw[j]); } if(fup[j] == 1 && fdw[j] < it[i][km]){ goto PCT1A; } if(fup[j] == 1 && fdw[j] > it[i][km]){ goto PCT1A; } if(fup[j] == 1 && fdw[j] == it[i][km]){ if(lg>=it[i][km]+ax){ goto PCT1A; } mark(i,km,'t',5); sst[i][km]=max11(sst[i][km],f1[j]); eet[i][km]=min11(eet[i][km],f2[j]); lg=0; ax=0; km++; } } PCT1A: km=k; lg=0; ax=0; for(j=mmax;j>=1;j--){ if(fup[j] == 0 ){ bx=0; if(fup[j-1] == 1 && j-1>=1) bx++; if(fup[j+1] == 1 && j+1<=mmax) bx++; if(lg==0) ax=bx; if(lg-ax < fdw[j]-bx) ax=bx; lg=max11(lg,fdw[j]); } if(fup[j] == 1 && fdw[j] < it[i][km]){ goto PCT2A; } if(fup[j] == 1 && fdw[j] > it[i][km]){ goto PCT2A; } if(fup[j] == 1 && fdw[j] == it[i][km]){ if(lg>=it[i][km]+ax){ goto PCT2A; } mark(i,km,'t',5); sst[i][km]=max11(sst[i][km],f1[j]); eet[i][km]=min11(eet[i][km],f2[j]); lg=0; ax=0; km--; } } PCT2A: lsum=0; for(j=1;j<=k;j++){ lsum=lsum+it[i][j]; } aflag=0; for(j=1;j<=yokomax;j++){ if(data[i][j] == 100) aflag++; } if(aflag == lsum){ for(j=1;j<=k;j++){ mark(i,j,'t',255); } swe( i,'t'); ksef(i,'t'); } } } void pchecky2(int i){ int j,k,l,km,m,p,ll[5],a,b,c,d,e; int lflag,n,lsum,aflag,lg,ax,bx; if(iy[i][KFIN]==0){ fax1iy(i,1,tatemax); k=iy[i][KKK]; km=1; lg=0; ax=0; for(j=1;j<=mmax;j++){ if(fup[j]== 0 ){ bx=0; if(fup[j-1] == 1 && j-1>=1) bx++; if(fup[j+1] == 1 && j+1<=mmax) bx++; if(lg==0) ax=bx; if(lg-ax < fdw[j]-bx) ax=bx; lg=max11(lg,fdw[j]); } if(fup[j] == 1 && fdw[j] < iy[i][km]){ goto PCY1A; } if(fup[j] == 1 && fdw[j] > iy[i][km]){ goto PCY1A; } if(fup[j] == 1 && fdw[j] == iy[i][km]){ if(lg>=iy[i][km]+ax){ goto PCY1A; } mark(i,km,'y',5); ssy[i][km]=max11(ssy[i][km],f1[j]); eey[i][km]=min11(eey[i][km],f2[j]); lg=0; ax=0; km++; } } PCY1A: km=k; lg=0; ax=0; for(j=mmax;j>=1;j--){ if(fup[j] == 0 ){ bx=0; if(fup[j-1] == 1 && j-1>=1) bx++; if(fup[j+1] == 1 && j+1<=mmax) bx++; if(lg==0) ax=bx; if(lg-ax < fdw[j]-bx) ax=bx; lg=max11(lg,fdw[j]); } if(fup[j] == 1 && fdw[j] < iy[i][km]){ goto PCY2A; } if(fup[j] == 1 && fdw[j] > iy[i][km]){ goto PCY2A; } if(fup[j] == 1 && fdw[j] == iy[i][km]){ if(lg>=iy[i][km]+ax){ goto PCY2A; } mark(i,km,'y',5); ssy[i][km]=max11(ssy[i][km],f1[j]); eey[i][km]=min11(eey[i][km],f2[j]); lg=0; ax=0; km--; } } PCY2A: lsum=0; for(j=1;j<=k;j++){ lsum=lsum+iy[i][j]; } aflag=0; for(j=1;j<=tatemax;j++){ if(data[j][i] == 100) aflag++; } if(aflag==lsum){ for(j=1;j<=k;j++){ mark(i,j,'y',255); } swe( i,'y'); ksef(i,'y'); } } } void qcheckt2(int i){ int j,k,l,km,m,p,ll[5],a,b,c,d,e; int n,aflag,lsum,lg,ax,bx; if(it[i][KFIN]==0){ k=it[i][KKK]; for(j=1;j<=k;j++){ for(m=1;m<=mmax;m++){ if(11&&data[i][bx]==200) bx--; eet[i][k]=min11(bx,eet[i][k]); if(ht[i][k]==5){ bx=yokomax; while(bx>eet[i][k]){ if(data[i][bx]==0) map(i,bx,'t',200); bx--; } } for(j=1;j1;j--){ if(ht[i][j]==5){ m=j; p=sst[i][m]; while(m-1>=1&&ht[i][m-1]!=5){ bx=eet[i][m-1]=min11(eet[i][m-1],p-2); while(data[i][bx]==200&&bx>1) bx--; eet[i][m-1]=min11(eet[i][m-1],bx); p=eet[i][m-1]-it[i][m-1]+1; m--; } } else{ m=j; p=eet[i][m]-it[i][m]+1; while(m-1>=1&&ht[i][m-1]!=5){ bx=eet[i][m-1]=min11(eet[i][m-1],p-2); while(data[i][bx]==200&&bx>1) bx--; eet[i][m-1]=min11(eet[i][m-1],bx); p=eet[i][m-1]-it[i][m-1]+1; m--; } } } for(j=kmin;j<=kmax;j++){ m=sst[i][j]; while(data[i][m]!=200&&m<=eet[i][j]) m++; if(m==sst[i][j]) bx=0; else bx=m-1; if(bx&&((bx-sst[i][j]+1)=kmin;j--){ m=eet[i][j]; while(data[i][m]!=200&&m>=sst[i][j]) m--; if(m==eet[i][j]) bx=0; else bx=m+1; if(bx&&(eet[i][j]-bx+1)1&&data[bx][i]==200) bx--; eey[i][k]=min11(bx,eey[i][k]); if(hy[i][k]==5){ bx=tatemax; while(bx>eey[i][k]){ if(data[bx][i]==0) map(i,bx,'y',200); bx--; } } for(j=1;j1;j--){ if(hy[i][j]==5){ m=j; p=ssy[i][m]; while(m-1>=1&&hy[i][m-1]!=5){ bx=eey[i][m-1]=min11(eey[i][m-1],p-2); while(data[bx][i]==200&&bx>1) bx--; eey[i][m-1]=min11(eey[i][m-1],bx); p=eey[i][m-1]-iy[i][m-1]+1; m--; } } else{ m=j; p=eey[i][m]-iy[i][m]+1; while(m-1>=1&&hy[i][m-1]!=5){ bx=eey[i][m-1]=min11(eey[i][m-1],p-2); while(data[bx][i]==200&&bx>1) bx--; eey[i][m-1]=min11(eey[i][m-1],bx); p=eey[i][m-1]-iy[i][m-1]+1; m--; } } } for(j=kmin;j<=kmax;j++){ m=ssy[i][j]; while(data[m][i]!=200&&m<=eey[i][j]) m++; if(m==ssy[i][j]) bx=0; else bx=m-1; if(bx&&((bx-ssy[i][j]+1)=kmin;j--){ m=eey[i][j]; while(data[m][i]!=200&&m>=ssy[i][j]) m--; if(m==eey[i][j]) bx=0; else bx=m+1; if(bx&&(eey[i][j]-bx+1)=1;j--){ eey[i][j]=eey[i][j+1]-iy[i][j+1]-1; } } for(i=1;i<=tatemax;i++){ k=it[i][KKK]; sst[i][1]=1; for(j=2;j<=k;j++){ sst[i][j]=sst[i][j-1]+it[i][j-1]+1; } eet[i][k]=yokomax; for(j=k-1;j>=1;j--){ eet[i][j]=eet[i][j+1]-it[i][j+1]-1; } } // for(i=0;i=1;j--){ eey[i][j]=eey[i][j+1]-iy[i][j+1]-1; } } for(i=1;i<=tatemax;i++){ k=it[i][KKK]; sst[i][1]=1; for(j=2;j<=k;j++){ sst[i][j]=sst[i][j-1]+it[i][j-1]+1; } eet[i][k]=yokomax; for(j=k-1;j>=1;j--){ eet[i][j]=eet[i][j+1]-it[i][j+1]-1; } } for(i=1;i<=yokomax;i++){ if(i%5==0){ box((kymax)*dot1+dot1/2+17,(ktmax+i)*dot1+dot1/2+27,5,6); box((kymax+tatemax+1)*dot1+dot1/2+17,(ktmax+i)*dot1+dot1/2+27,5,6); } if(i%10==0){ box((kymax)*dot1+dot1/2+17,(ktmax+i)*dot1+dot1/2+27,5,5); box((kymax+tatemax+1)*dot1+dot1/2+17,(ktmax+i)*dot1+dot1/2+27,5,5); } box((kymax+tatemax+2)*dot1+dot1/2+17,(ktmax+i)*dot1+dot1/2+27,5,18); } for(i=1;i<=tatemax;i++){ if(i%5==0){ box((kymax+i)*dot1+dot1/2+17,(ktmax)*dot1+dot1/2+27,5,6); box((kymax+i)*dot1+dot1/2+17,(ktmax+yokomax+1)*dot1+dot1/2+27,5,6); } if(i%10==0){ box((kymax+i)*dot1+dot1/2+17,(ktmax)*dot1+dot1/2+27,5,5); box((kymax+i)*dot1+dot1/2+17,(ktmax+yokomax+1)*dot1+dot1/2+27,5,5); } box((kymax+i)*dot1+dot1/2+17,(ktmax+yokomax+2)*dot1+dot1/2+27,5,18); } } void mno_open1(char *file){ int i=0,j=0,k=0; int xx=0,y=0,mtype=0,uti=0,fhajime=0; int tt=0,yy=0,m=0,a,b; char aam[50],bbm[50]; FILE *fpin; int c; strcpy(aam,""); strcpy(bbm,""); fpin = fopen(file,"r"); if(fpin==0){ printf("ファイル名が %s やて? そんなのあらへんで\n\n",file); exit(0); } c=fgetc(fpin); j=1; ex1=0; while(c != EOF){ mtype=0; fhajime=0; y=0; m=0; k=1; i=0; while(c != '\n'){ if(i==0){ if(c == '*' ){ c=fgetc(fpin); if( c == 'T'){ mtype=1; uti=1; i++; } else if(c == 'Y'){ mtype=1; uti=2; i++; } else if(c == 't'){ mtype=1; uti=3; i++; } else if(c == 'y'){ mtype=1; uti=4; i++; } else if(c == 'S'){ mtype=1; uti=10; i++; } else if(c == 's'){ mtype=1; uti=10; i++; } else if(c == 'R'){ mtype=1; uti=15; i++; } else if(c == 'r'){ mtype=1; uti=15; i++; } else if(c == 'K'){ mtype=1; uti=20; i++; } else if(c == 'k'){ mtype=1; uti=20; i++; } else if(c == 'D'){ mtype=1; uti=25; i++; } else if(c == 'd'){ mtype=1; uti=25; i++; } else if(c == 'L'){ mtype=1; uti=30; i++; } else if(c == 'l'){ mtype=1; uti=30; i++; } else if(c == 'Z'){ mtype=1; uti=35; i++; ex1++; } else if(c == 'z'){ mtype=1; uti=35; i++; ex1++; } else if(c == 'X'){ mtype=40; i++; } else if(c == 'x'){ mtype=40; i++; } else if(c == 'M'){ mtype=45; i++; } else if(c == 'm'){ mtype=45; i++; } else if(c == 'A'){ mtype=50; i++; } else if(c == 'a'){ mtype=50; i++; } else if(c == 'B'){ mtype=51; i++; } else if(c == 'b'){ mtype=51; i++; } else{ printf("何かおかしいんと、ちゃいまっか"); printf(" %d 行の2文字目が %c \n",j,c); exit(0); } } else if(c == ';'){ mtype=99; i++; } else if(c == ' '){ mtype=99; i++; } else{ printf("何かおかしいんと、ちゃいまっか"); printf(" %d 行の1文字目が %c \n",j,c); exit(0); } } else{ if(mtype==45){ msg[m]=c; m++; } if(mtype==50){ aam[m]=c; aam[m+1]='\0'; m++; } if(mtype==51){ bbm[m]=c; bbm[m+1]='\0'; m++; } if(c == ' ' && mtype==1 && fhajime==0){ if(uti==1){ tatemax=xx; } if(uti==2){ yokomax=xx; } if(uti==10){ if(0<= xx && xx <=9) sl=xx; else sl=6; } if(uti==15){ if(xx == 1) trace=1; else trace=0; } if(uti==20){ if(0<= xx && xx < 50) kdata=xx; else kdata=50; } if(uti==25){ if(0<= xx && xx < 500) speed=xx; else speed=5; } if(uti==30){ if(0<= xx && xx < 220) length=xx; else length=220; } if(uti==3){ if(xx==1){ tt=1; } else{ tt++; if(tt != xx){ printf("順序がちゃう縦 %d 行\n",tt); exit(0); } } y=0; } if(uti==4){ if(xx==1){ yy=1; } else{ yy++; if(yy != xx){ printf("順序がちゃう横 %d 行\n",yy); exit(0); } } y=0; } if(uti==35){ exx[ex1]=xx; xx=0;y=0; } fhajime=1; } if((c == ','|| c == '.') && mtype==1 && fhajime==0){ if(uti==35){ exx[ex1]=xx; xx=0; y=0; fhajime=1; } } if((c == ','|| c == '.') && mtype==1 && fhajime==1){ if(uti==3){ it[tt][k]=xx; y=0; } else if(uti==4){ iy[yy][k]=xx; y=0; } else if(uti==35){ exy[ex1]=xx; xx=0; y=0; } k++; } if('0' <= c && c <= '9' && mtype==1){ xx=c-'0'+y*10; y=xx; } } c=fgetc(fpin); } if(mtype==1 ){ if(fhajime==0 ){ if(uti==1){ tatemax=xx; } if(uti==2){ yokomax=xx; } if(uti==10){ if(0<= xx && xx <=9) sl=xx; else sl=6; } if(uti==15){ if(xx == 1) trace=1; else trace=0; } if(uti==20){ if(0<= xx && xx < 50) kdata=xx; else kdata=50; } if(uti==25){ if(0<= xx && xx < 500) speed=xx; else speed=5; } if(uti==30){ if(0<= xx && xx < 220) length=xx; else length=220; } if(uti==35){ exz[ex1]=xx;xx=0;y=0; } } if(fhajime==1){ if(uti==3){ it[tt][k]=xx; it[tt][KKK]=k; } else if(uti==4){ iy[yy][k]=xx; iy[yy][KKK]=k; } else if(uti==35){ exz[ex1]=xx; } else{ printf("DATAが入ってないで:ファイル %s の %d 行\n",file,j); exit(0); } } } c=fgetc(fpin); j++; } fclose(fpin); if(strcmp(aam,"")!=0){ aac=asc11(aam[0])*0x100000+asc11(aam[1])*0x010000+asc11(aam[2])*0x001000+asc11(aam[3])*0x000100+asc11(aam[4])*0x000010+asc11(aam[5])*0x000001; } if(strcmp(bbm,"")!=0){ bbc=asc11(bbm[0])*0x100000+asc11(bbm[1])*0x010000+asc11(bbm[2])*0x001000+asc11(bbm[3])*0x000100+asc11(bbm[4])*0x000010+asc11(bbm[5])*0x000001; } } void point1x(void){ int i,k; for(i=1;i<=tatemax;i++){ k=it[i][KKK]; sum1it( i, 1,k, 1,yokomax); } for(i=1;i<=yokomax;i++){ k=iy[i][KKK]; sum1iy( i, 1,k, 1,tatemax); } } void point2x(){ int i,j,k; for(i=1;i<=tatemax;i++){ if(data[i][1]==100){ for(j=1;j<=it[i][1];j++){ map(i,j,'t',100); if(maperr==1) return; } if(it[i][KFIN]==0){ mark(i,1,'t',5); } if(it[i][1] != yokomax){ map(i,j,'t',200); if(maperr==1) return; } if(it[i][KKK]==1){ for(j=it[i][1]+1;j<=yokomax;j++){ map(i,j,'t',200); if(maperr==1) return; } ksef(i,'t'); mark(i,1,'t',255); } } } for(i=1;i<=yokomax;i++){ if(data[1][i]==100){ for(j=1;j<=iy[i][1];j++){ map(i,j,'y',100); if(maperr==1) return; } if(iy[i][KFIN]==0){ mark(i,1,'y',5); } if(iy[i][1] != tatemax){ map(i,j,'y',200); if(maperr==1) return; } if(iy[i][KKK] == 1){ for(j=iy[i][1]+1;j<=tatemax;j++){ map(i,j,'y',200); if(maperr==1) return; } ksef(i,'y'); mark(i,1,'y',255); } } } for(i=1;i<=tatemax;i++){ k=it[i][KKK]; if(data[i][yokomax]==100){ for(j=yokomax;j>=yokomax-it[i][k]+1;j--){ map(i,j,'t',100); if(maperr==1) return; } if(it[i][KFIN]==0){ mark(i,k,'t',5); } if(it[i][k] != yokomax){ map(i,j,'t',200); if(maperr==1) return; } if(k == 1){ for(j=yokomax-it[i][k];j>=1;j--){ map(i,j,'t',200); if(maperr==1) return; } ksef(i,'t'); mark(i,k,'t',255); } } } for(i=1;i<=yokomax;i++){ k=iy[i][KKK]; if(data[tatemax][i]==100){ for(j=tatemax;j>=tatemax-iy[i][k]+1;j--){ map(i,j,'y',100); if(maperr==1) return; } if(iy[i][KFIN]==0){ mark(i,k,'y',5); } if(iy[i][k] != tatemax){ map(i,j,'y',200); if(maperr==1) return; } if(k == 1){ for(j=tatemax-iy[i][k];j>=1;j--){ map(i,j,'y',200); if(maperr==1) return; } ksef(i,'y'); mark(i,k,'y',255); } } } } void point3(){ int i,j,k; for(i=1;i<=tatemax;i++){ if(it[i][KFIN]==0){ k=it[i][KKK]; for(j=1; j<=yokomax; j++){ d[j]=data[i][j]; } batu1it(i, 1,k, 1,yokomax); } } for(i=1;i<=yokomax;i++){ if(iy[i][KFIN]==0){ k=iy[i][KKK]; for(j=1; j<=tatemax; j++){ d[j]=data[j][i]; } batu1iy(i, 1,k, 1,tatemax); } } } void point4a(){ int i,j,k; for(i=1;i<=tatemax;i++){ lse( i,'t'); for(j=ls; j<=le; j++){ d[j]=data[i][j]; } batu1it(i, kmin,kmax, ls,le); } for(i=1;i<=yokomax;i++){ lse( i,'y'); for(j=ls; j<=le; j++){ d[j]=data[j][i]; } batu1iy(i, kmin,kmax, ls,le); } } void point5a(){ int i,j,k,q; for(i=1;i<=tatemax;i++){ if(it[i][KFIN]==0 && ht[i][1]<=5){ q=1; if(data[i][q]==200){ while(q<=yokomax && data[i][q]==200){ q++; } } if(data[i][q]==100){ for(j=q;j<=q-1+it[i][1];j++){ map(i,j,'t',100); if(maperr==1) return; } if(q-1+it[i][1] != yokomax){ map(i,j,'t',200); if(maperr==1) return; } mark(i,1,'t',5); if(it[i][KKK]==1){ for(j=q+it[i][1];j<=yokomax;j++){ map(i,j,'t',200); if(maperr==1) return; } ksef(i,'t'); mark(i,1,'t',255); } } } } for(i=1;i<=yokomax;i++){ if(iy[i][KFIN]==0 && hy[i][1]<=5){ q=1; if(data[q][i]==200){ while(q<=tatemax && data[q][i]==200){ q++; } } if(data[q][i]==100){ for(j=q;j<=q-1+iy[i][1];j++){ map(i,j,'y',100); if(maperr==1) return; } if(q-1+iy[i][1] != tatemax){ map(i,j,'y',200); if(maperr==1) return; } mark(i,1,'y',5); if(iy[i][KKK] == 1){ for(j=q+iy[i][1];j<=tatemax;j++){ map(i,j,'y',200); if(maperr==1) return; } ksef(i,'y'); mark(i,1,'y',255); } } } } for(i=1;i<=tatemax;i++){ k=it[i][KKK]; if(it[i][KFIN]==0 && ht[i][k]<=5){ q=yokomax; if(data[i][q]==200){ while(q>=1 && data[i][q]==200){ q--; } } if(data[i][q]==100){ for(j=q;j>=q-it[i][k]+1;j--){ map(i,j,'t',100); if(maperr==1) return; } if(q-it[i][k]+1 != 1){ map(i,j,'t',200); if(maperr==1) return; } mark(i,k,'t',5); if(k == 1){ for(j=q-it[i][k];j>=1;j--){ map(i,j,'t',200); if(maperr==1) return; } ksef(i,'t'); mark(i,k,'t',255); } } } } for(i=1;i<=yokomax;i++){ k=iy[i][KKK]; if(iy[i][KFIN]==0 && hy[i][k]<=5){ q=tatemax; if(data[q][i]==200){ while(q>=1 && data[q][i]==200){ q--; } } if(data[q][i]==100){ for(j=q;j>=q-iy[i][k]+1;j--){ map(i,j,'y',100); if(maperr==1) return; } if(q-iy[i][k]+1 != 1){ map(i,j,'y',200); if(maperr==1) return; } mark(i,k,'y',5); if(k == 1){ for(j=q-iy[i][k];j>=1;j--){ map(i,j,'y',200); if(maperr==1) return; } ksef(i,'y'); mark(i,k,'y',255); } } } } } int max11(int a,int b){ if(a<=b) return b; else return a; } int min11(int a,int b){ if(a<=b) return a; else return b; } double max22(double a,double b){ if(a<=b) return b; else return a; } double min22(double a,double b){ if(a<=b) return a; else return b; } void v2it(){ int i,k,qs,n,p,j,j2,pp; for(i=1;i<=tatemax;i++){ pcheckt2(i); if(it[i][KFIN]==0){ k=it[i][KKK]; j2=1; pp=0; qs=0; for(n=1; n<=k; n++){ if(ht[i][n] == 5){ qs=it[i][n]; p=0; for(j=j2; (j<=yokomax && p=1; n--){ if(ht[i][n] == 5){ qs=it[i][n]; p=0; for(j=j2; (j>=1 && p=1; n--){ if(hy[i][n] == 5){ qs=iy[i][n]; p=0; for(j=j2; (j>=1 && p=f2[mmax]-it[i][kmax]+1;j--){ map(i,j,'t',100); if(maperr==1) return;} } /* 21 xQ */ if(fup[1]==2&&fup[2]==1&&mmax>=2){ for(j=f1[2];j<=f1[2]+it[i][kmin]-1;j++){ map(i,j,'t',100); if(maperr==1) return;} } if(fup[mmax]==2&&fup[mmax-1]==1&&mmax>=2){ for(j=f2[mmax-1];j>=f2[mmax-1]-it[i][kmax]+1;j--){ map(i,j,'t',100); if(maperr==1) return;} } /* 02 _x */ if(fup[1]==0&&fup[2]==2&&fdw[1]=3){ for(j=f2[2];j>=f2[2]-it[i][kmin]+1;j--){ map(i,j,'t',100); if(maperr==1) return;} } if(fup[mmax]==0&&fup[mmax-1]==1&&fup[mmax-2]==2&&f2[mmax]-f1[mmax-1]=3){ for(j=f1[mmax-1];j<=f1[mmax-1]+it[i][kmax]-1;j++){ map(i,j,'t',100); if(maperr==1) return;} } /* 2012 x_Qx */ if(fup[1]==2&&fup[2]==0&&fup[3]==1&&fup[4]==2&&f2[3]-f1[2]=4){ for(j=f2[3];j>=f2[3]-it[i][kmin]+1;j--){ map(i,j,'t',100); if(maperr==1) return;} } if(fup[mmax]==2&&fup[mmax-1]==0&&fup[mmax-2]==1&&fup[mmax-3]==2&&f2[mmax-1]-f1[mmax-2]=4){ for(j=f1[mmax-2];j<=f1[mmax-2]+it[i][kmax]-1;j++){ map(i,j,'t',100); if(maperr==1) return;} } /* 0102 _Q_x */ if(fup[1]==0&&fup[2]==1&&fup[3]==0&&fup[4]==2&&f2[3]-f1[1]=4){ for(j=f1[2];j<=f1[1]+it[i][kmin]-1;j++){ map(i,j,'t',100); if(maperr==1) return;} for(j=f2[2];j>=f2[3]-it[i][kmin]+1;j--){ map(i,j,'t',100); if(maperr==1) return;} for(j=f1[1]+it[i][kmin];j<=f2[3];j++){ map(i,j,'t',200); if(maperr==1) return;} for(j=f2[3]-it[i][kmin];j>=f1[1];j--){ map(i,j,'t',200); if(maperr==1) return;} } if(fup[mmax]==0&&fup[mmax-1]==1&&fup[mmax-2]==0&&fup[mmax-3]==2&&f2[mmax]-f1[mmax-2]=4){ for(j=f2[mmax-1];j>=f2[mmax]-it[i][kmax]+1;j--){ map(i,j,'t',100); if(maperr==1) return;} for(j=f1[mmax-1];j<=f1[mmax-2]+it[i][kmax]-1;j++){ map(i,j,'t',100); if(maperr==1) return;} for(j=f2[mmax]-it[i][kmax];j>=f1[mmax-2];j--){ map(i,j,'t',200); if(maperr==1) return;} for(j=f1[mmax-2]+it[i][kmax];j<=f2[mmax];j++){ map(i,j,'t',200); if(maperr==1) return;} } /* 20102 x_Q_x */ if(fup[1]==2&&fup[2]==0&&fup[3]==1&&fup[4]==0&&fup[5]==2&&f2[4]-f1[2]=5){ for(j=f1[3];j<=f1[2]+it[i][kmin]-1;j++){ map(i,j,'t',100); if(maperr==1) return;} for(j=f2[3];j>=f2[4]-it[i][kmin]+1;j--){ map(i,j,'t',100); if(maperr==1) return;} for(j=f1[2]+it[i][kmin];j<=f2[4];j++){ map(i,j,'t',200); if(maperr==1) return;} for(j=f2[4]-it[i][kmin];j>=f1[2];j--){ map(i,j,'t',200); if(maperr==1) return;} } if(fup[mmax]==2&&fup[mmax-1]==0&&fup[mmax-2]==1&&fup[mmax-3]==0&&fup[mmax-4]==2&&f2[mmax-1]-f1[mmax-3]=5){ for(j=f2[mmax-2];j>=f2[mmax-1]-it[i][kmax]+1;j--){ map(i,j,'t',100); if(maperr==1) return;} for(j=f1[mmax-2];j<=f1[mmax-3]+it[i][kmax]-1;j++){ map(i,j,'t',100); if(maperr==1) return;} for(j=f2[mmax-1]-it[i][kmax];j>=f1[mmax-3];j--){ map(i,j,'t',200); if(maperr==1) return;} for(j=f1[mmax-3]+it[i][kmax];j<=f2[mmax-1];j++){ map(i,j,'t',200); if(maperr==1) return;} } /* 201 x_Q */ if(fup[1]==2&&fup[2]==0&&fup[3]==1&&f2[3]-f1[2]=3){ for(j=f1[3];j<=f1[2]+it[i][kmin]-1;j++){ map(i,j,'t',100); if(maperr==1) return;} /* for(j=f2[3]-it[i][kmin];j>=f1[2];j--){ map(i,j,'t',200); if(maperr==1) return;} */ } if(fup[mmax]==2&&fup[mmax-1]==0&&fup[mmax-2]==1&&f2[mmax-1]-f1[mmax-2]=3){ for(j=f2[mmax-2];j>=f2[mmax-1]-it[i][kmax]+1;j--){ map(i,j,'t',100); if(maperr==1) return;} /* for(j=f1[mmax-2]+it[i][kmax];j<=f2[mmax-1];j++){ map(i,j,'t',200); if(maperr==1) return;} */ } } newt[i]=50; } void bcheck2y(int i){ int j,k,l,m,p,r,n,aflag; pchecky2(i); qchecky2(i); if(iy[i][KFIN]==0&&newy[i]==100){ k=iy[i][KKK]; lse(i,'y'); fax1iy(i,ls,le); /* 1 Q */ if(fup[1]==1){ for(j=f1[1];j<=f1[1]+iy[i][kmin]-1;j++){ map(i,j,'y',100); if(maperr==1) return;} } if(fup[mmax]==1){ for(j=f2[mmax];j>=f2[mmax]-iy[i][kmax]+1;j--){ map(i,j,'y',100); if(maperr==1) return;} } /* 21 xQ */ if(fup[1]==2&&fup[2]==1&&mmax>=2){ for(j=f1[2];j<=f1[2]+iy[i][kmin]-1;j++){ map(i,j,'y',100); if(maperr==1) return;} } if(fup[mmax]==2&&fup[mmax-1]==1&&mmax>=2){ for(j=f2[mmax-1];j>=f2[mmax-1]-iy[i][kmax]+1;j--){ map(i,j,'y',100); if(maperr==1) return;} } /* 02 _x */ if(fup[1]==0&&fup[2]==2&&fdw[1]=3){ for(j=f2[2];j>=f2[2]-iy[i][kmin]+1;j--){ map(i,j,'y',100); if(maperr==1) return;} } if(fup[mmax]==0&&fup[mmax-1]==1&&fup[mmax-2]==2&&f2[mmax]-f1[mmax-1]=3){ for(j=f1[mmax-1];j<=f1[mmax-1]+iy[i][kmax]-1;j++){ map(i,j,'y',100); if(maperr==1) return;} } /* 2012 x_Qx */ if(fup[1]==2&&fup[2]==0&&fup[3]==1&&fup[4]==2&&f2[3]-f1[2]=4){ for(j=f2[3];j>=f2[3]-iy[i][kmin]+1;j--){ map(i,j,'y',100); if(maperr==1) return;} } if(fup[mmax]==2&&fup[mmax-1]==0&&fup[mmax-2]==1&&fup[mmax-3]==2&&f2[mmax-1]-f1[mmax-2]=4){ for(j=f1[mmax-2];j<=f1[mmax-2]+iy[i][kmax]-1;j++){ map(i,j,'y',100); if(maperr==1) return;} } /* 0102 _Q_x */ if(fup[1]==0&&fup[2]==1&&fup[3]==0&&fup[4]==2&&f2[3]-f1[1]=4){ for(j=f1[2];j<=f1[1]+iy[i][kmin]-1;j++){ map(i,j,'y',100); if(maperr==1) return;} for(j=f2[2];j>=f2[3]-iy[i][kmin]+1;j--){ map(i,j,'y',100); if(maperr==1) return;} for(j=f1[1]+iy[i][kmin];j<=f2[3];j++){ map(i,j,'y',200); if(maperr==1) return;} for(j=f2[3]-iy[i][kmin];j>=f1[1];j--){ map(i,j,'y',200); if(maperr==1) return;} } if(fup[mmax]==0&&fup[mmax-1]==1&&fup[mmax-2]==0&&fup[mmax-3]==2&&f2[mmax]-f1[mmax-2]=4){ for(j=f2[mmax-1];j>=f2[mmax]-iy[i][kmax]+1;j--){ map(i,j,'y',100); if(maperr==1) return;} for(j=f1[mmax-1];j<=f1[mmax-2]+iy[i][kmax]-1;j++){ map(i,j,'y',100); if(maperr==1) return;} for(j=f2[mmax]-iy[i][kmax];j>=f1[mmax-2];j--){ map(i,j,'y',200); if(maperr==1) return;} for(j=f1[mmax-2]+iy[i][kmax];j<=f2[mmax];j++){ map(i,j,'y',200); if(maperr==1) return;} } /* 20102 x_Q_x */ if(fup[1]==2&&fup[2]==0&&fup[3]==1&&fup[4]==0&&fup[5]==2&&f2[4]-f1[2]=5){ for(j=f1[3];j<=f1[2]+iy[i][kmin]-1;j++){ map(i,j,'y',100); if(maperr==1) return;} for(j=f2[3];j>=f2[4]-iy[i][kmin]+1;j--){ map(i,j,'y',100); if(maperr==1) return;} for(j=f1[2]+iy[i][kmin];j<=f2[4];j++){ map(i,j,'y',200); if(maperr==1) return;} for(j=f2[4]-iy[i][kmin];j>=f1[2];j--){ map(i,j,'y',200); if(maperr==1) return;} } if(fup[mmax]==2&&fup[mmax-1]==0&&fup[mmax-2]==1&&fup[mmax-3]==0&&fup[mmax-4]==2&&f2[mmax-1]-f1[mmax-3]=5){ for(j=f2[mmax-2];j>=f2[mmax-1]-iy[i][kmax]+1;j--){ map(i,j,'y',100); if(maperr==1) return;} for(j=f1[mmax-2];j<=f1[mmax-3]+iy[i][kmax]-1;j++){ map(i,j,'y',100); if(maperr==1) return;} for(j=f2[mmax-1]-iy[i][kmax];j>=f1[mmax-3];j--){ map(i,j,'y',200); if(maperr==1) return;} for(j=f1[mmax-3]+iy[i][kmax];j<=f2[mmax-1];j++){ map(i,j,'y',200); if(maperr==1) return;} } /* 201 x_Q */ if(fup[1]==2&&fup[2]==0&&fup[3]==1&&f2[3]-f1[2]=3){ for(j=f1[3];j<=f1[2]+iy[i][kmin]-1;j++){ map(i,j,'y',100); if(maperr==1) return;} /* for(j=f2[3]-iy[i][kmin];j>=f1[2];j--){ map(i,j,'y',200); if(maperr==1) return;} */ } if(fup[mmax]==2&&fup[mmax-1]==0&&fup[mmax-2]==1&&f2[mmax-1]-f1[mmax-2]=3){ for(j=f2[mmax-2];j>=f2[mmax-1]-iy[i][kmax]+1;j--){ map(i,j,'y',100); if(maperr==1) return;} /* for(j=f1[mmax-2]+iy[i][kmax];j<=f2[mmax-1];j++){ map(i,j,'y',200); if(maperr==1) return;} */ } } newy[i]=50; } void mno_save1(){ int i,j; FILE *fp,*ft; strcpy(ar3,ar2); strcat(ar3,"."); sprintf(uuu,"%ld",nowsec); strcat(ar3,uuu); fp=fopen(ar3,"w"); if(fp==NULL){ printf("ファイル名が %s 失敗\n",ar3); exit(0); } else{ for(i=1;i<=yokomax;i++){ for(j=1;j<=tatemax;j++){ if(mapflg==0){ if( data[j][i]== 0) fputc('_',fp); if( data[j][i]==100) fputc('Q',fp); if( data[j][i]==200) fputc('x',fp); } if(mapflg==1){ //data2 if( data[j][i]== 0) fputc('_',fp); if( data[j][i]==100) fputc('Q',fp); if( data[j][i]==200) fputc('x',fp); } } fputc('\n',fp); } } fclose(fp); if(argc1<2) strcpy(filet,test); else strcpy(filet,ar2); strcat(filet,"2.mt"); if(notimesave==1&&tt1>0) pt1s=tt1s; else{ gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } } if(notimesave==0){ ft = fopen(filet,"w"); if(ft==NULL){ printf("ファイル名が %s 失敗\n",filet); exit(0); } fprintf(ft,"%4ld.%06ld",pt1s,pt1u); fclose(ft); } if(argc1<2) strcpy(filek,test); else strcpy(filek,ar2); strcat(filek,"m.karte"); ft = fopen(filek,"a"); if(ft==NULL){ printf("ファイル名が %s 失敗\n",filek); exit(0); } fprintf(ft,"解析タイム=%4ld.%06ld秒  dot=%ld esf=%3ld.%06ld\n",pt1s,pt1u,nuri,esfs,esfu); fclose(ft); for(i=1;i<=yokomax;i++){ for(j=1;j<=tatemax;j++){ if(data[j][i] == 100) box( (kymax+j)*dot1+20,(ktmax+i)*dot1+30,dot2,5); if(data[j][i] == 200) box( (kymax+j)*dot1+20,(ktmax+i)*dot1+30,dot2,6); } } for(i=1;i<=yokomax;i++){ if(i%5==0){ box((kymax)*dot1+dot1/2+17,(ktmax+i)*dot1+dot1/2+27,5,6); box((kymax+tatemax+1)*dot1+dot1/2+17,(ktmax+i)*dot1+dot1/2+27,5,6); } if(i%10==0){ box((kymax)*dot1+dot1/2+17,(ktmax+i)*dot1+dot1/2+27,5,5); box((kymax+tatemax+1)*dot1+dot1/2+17,(ktmax+i)*dot1+dot1/2+27,5,5); } } for(i=1;i<=tatemax;i++){ if(i%5==0){ box((kymax+i)*dot1+dot1/2+17,(ktmax)*dot1+dot1/2+27,5,6); box((kymax+i)*dot1+dot1/2+17,(ktmax+yokomax+1)*dot1+dot1/2+27,5,6); } if(i%10==0){ box((kymax+i)*dot1+dot1/2+17,(ktmax)*dot1+dot1/2+27,5,5); box((kymax+i)*dot1+dot1/2+17,(ktmax+yokomax+1)*dot1+dot1/2+27,5,5); } } sprintf(sss,"Save"); g_rgb(0xffffff); g_fill(600,0,70,13); g_rgb(0x0000ff); g_text(610,13,sss); sprintf(sss,"Dot=%ld/%ld",nuri,(long)tatemax*yokomax); g_rgb(0xffffff); g_fill(825,13,99,13); g_rgb(0x0000ff); g_text(830,26,sss); } void movedata(unsigned char d1[max][max],unsigned char d2[max][max],unsigned char zht1[max][NARABI],unsigned char zht2[max][NARABI],unsigned char zhy1[max][NARABI],unsigned char zhy2[max][NARABI],int zit1[max][NARABI],int zit2[max][NARABI],int ziy1[max][NARABI],int ziy2[max][NARABI]){ int i,j; for(i=1;i<=yokomax;i++){ for(j=1;j<=tatemax;j++){ if(d1[j][i]!=d2[j][i]){ if(d2[j][i] == 0&&startbb->data_white[j][i]==0) box( (kymax+j)*dot1+20,(ktmax+i)*dot1+30,dot2,18); //if(d2[j][i] == 0) box( (kymax+j)*dot1+20,(ktmax+i)*dot1+30,dot2,18); if(d1[j][i] == 100&&d2[j][i]==200){ box( (kymax+j)*dot1+20,(ktmax+i)*dot1+30,dot2,5);} if(d1[j][i] == 200&&d2[j][i]==100){ box( (kymax+j)*dot1+20,(ktmax+i)*dot1+30,dot2,6);} } } } nuri=0; for(i=1;i<=tatemax;i++){ for(j=1;j<=yokomax;j++){ d1[i][j]=d2[i][j]; if(d1[i][j]) nuri++; } } for(i=1;i<=tatemax;i++){ for(j=1;jnext=NULL; from->k=2; from->ty='t'; from->fas=500; from->fau=0; return from; } struct backboard *backboard_create() { struct backboard *from; int size; size=sizeof(struct backboard); from=(struct backboard *)malloc(size); if(!from){ printf("out of memory \n"); exit(1); } from->no=0; from->jotai=0; from->mujun=0; from->ltemp=0; return from; } struct line *shojun(temp) struct line *temp; { struct line *old; struct line *now; now=stt; old=NULL; if(!last){ temp->next=NULL; last =temp; return temp; } while(now){ if(now->fas==temp->fas&&now->fau==temp->fau&&now->k < temp->k){ old=now; now=now->next; } else if(now->fas==temp->fas&&now->faufau){ old=now; now=now->next; } else if(now->fasfas){ old=now; now=now->next; } else{ if(old){ old ->next=temp; temp->next=now; return stt; } else{ temp->next=now; return temp; } } } last->next=temp; temp->next=NULL; last =temp; return stt; } void uu4checky(int i,int km,int ns[NARABI]){ int p,pp,sm=0,n,n1; S141: if(z3==1){ return; } ns[km]++; ne[km]++; if(mb[km+1]==0) mb[km+1]=ne[km]+1; if(ne[km] > bb[km]){ if(kmin==km) ends=1; return; } if(nr[km][ns[km]]==1) goto S141; for(n=ns[km]; n<=ne[km]; n++){ if(data[n][i]==200){ ns[km]=n; ne[km]=ns[km]+iy[i][km]-1; goto S141; } } if(data[ns[km]-1][i]==100) goto S141; if(data[ne[km]+1][i]==100) goto S141; for(n=ne[km-1]+1; nLGETC){ lgetc=0; gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } pt4s=getsec -st4s; pt4u=getusec-st4u; if(pt4u<0){ pt4u+=1000000; pt4s--; } } if(mapflg==1){ pt3s=getsec -st3s; pt3u=getusec-st3u; if(pt3u<0){ pt3u+=1000000; pt3s--; } } if(mapflg==1&&(dsf2s bb[km]){ if(kmin==km) ends=1; return; } if(nr[km][ns[km]]==1) goto S142; for(n=ns[km]; n<=ne[km]; n++){ if(data[i][n]==200){ ns[km]=n; ne[km]=ns[km]+it[i][km]-1; goto S142; } } if(data[i][ns[km]-1]==100) goto S142; if(data[i][ne[km]+1]==100) goto S142; for(n=ne[km-1]+1; nLGETC){ lgetc=0; gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } pt4s=getsec -st4s; pt4u=getusec-st4u; if(pt4u<0){ pt4u+=1000000; pt4s--; } } if(mapflg==1){ pt3s=getsec -st3s; pt3u=getusec-st3u; if(pt3u<0){ pt3u+=1000000; pt3s--; } } if(mapflg==1&&(dsf2s bb[km]){ if(kmin==km) ends=1; return; } if(nr[km][ns[km]]==1){ goto S111;} for(n=ns[km]; n<=ne[km]; n++){ if(data[n][i]==200){ ns[km]=n; ne[km]=ns[km]+iy[i][km]-1; goto S111; } } if(data[ns[km]-1][i]==100) goto S111; if(data[ne[km]+1][i]==100) goto S111; for(n=ne[km-1]+1; nLGETC){ lgetc=0; gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } pt4s=getsec -st4s; pt4u=getusec-st4u; if(pt4u<0){ pt4u+=1000000; pt4s--; } /*printf("4558 pt4=%3ld.%06ld\n",pt4s,pt4u);*/ } if(mapflg==1){ pt3s=getsec -st3s; pt3u=getusec-st3u; if(pt3u<0){ pt3u+=1000000; pt3s--; } } if(mapflg==1&&(dsf2s bb[km]){ if(kmin==km) ends=1; return; } if(nr[km][ns[km]]==1) goto S112; for(n=ns[km]; n<=ne[km]; n++){ if(data[i][n]==200){ ns[km]=n; ne[km]=ns[km]+it[i][km]-1; goto S112; } } if(data[i][ns[km]-1]==100) goto S112; if(data[i][ne[km]+1]==100) goto S112; for(n=ne[km-1]+1; nLGETC){ lgetc=0; gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } pt4s=getsec -st4s; pt4u=getusec-st4u; if(pt4u<0){ pt4u+=1000000; pt4s--; } } if(mapflg==1){ pt3s=getsec -st3s; pt3u=getusec-st3u; if(pt3u<0){ pt3u+=1000000; pt3s--; } } if(mapflg==1&&(dsf2s=kmin; p--){ bb[p]=bed; mb[p]=0; bed=bed-iy[i][p]-1; } ns[kmin]=ls; mb[kmin]=ls; ne[kmin]=ns[kmin]+iy[i][kmin]-1; ns[kmin-1]=ns[kmin]; ne[kmin-1]=ne[kmin]; ns[kmin]--; ne[kmin]--; ends=0; fff=0; z3=0; lgetc=0; gettime(); st4s=getsec; st4u=getusec; pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } uu4checky(i,kmin,ns); gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } pt4s=getsec-st4s; pt4u=getusec-st4u; if(pt4u<0){ pt4u+=1000000; pt4s--; } nowvsec=pt1s; if(mapflg==1&&(dsf2s=kmin; p--){ bb[p]=bed; mb[p]=0; bed=bed-it[i][p]-1; } ns[kmin]=ls; mb[kmin]=ls; ne[kmin]=ns[kmin]+it[i][kmin]-1; ns[kmin-1]=ns[kmin]; ne[kmin-1]=ne[kmin]; ns[kmin]--; ne[kmin]--; ends=0; fff=0; z3=0; lgetc=0; gettime(); st4s=getsec; st4u=getusec; pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } uu4checkt(i,kmin,ns); gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } pt4s=getsec-st4s; pt4u=getusec-st4u; if(pt4u<0){ pt4u+=1000000; pt4s--; } nowvsec=(pt1s); if(mapflg==1&&(dsf2sLGETC){ lgetc=0; gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } pt4s=getsec -st4s; pt4u=getusec-st4u; if(pt4u<0){ pt4u+=1000000; pt4s--; } } if(mapflg==1){ pt3s=getsec -st3s; pt3u=getusec-st3u; if(pt3u<0){ pt3u+=1000000; pt3s--; } } if(mapflg==1&&(dsf2s bb[km]){ if(kmin==km) ends=1; return; } if(nr[km][ns[km]]==1){ goto S162;} for(n=ns[km]; n<=ne[km]; n++){ if(d2[n]==200){ ns[km]=n; ne[km]=ns[km]+it[i][km]-1; goto S162; } } if(d2[ns[km]-1]==100){ goto S162;} if(d2[ne[km]+1]==100){ goto S162;} for(n=ne[km-1]+1; nLGETC){ lgetc=0; gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } pt4s=getsec -st4s; pt4u=getusec-st4u; if(pt4u<0){ pt4u+=1000000; pt4s--; } } if(mapflg==1){ pt3s=getsec -st3s; pt3u=getusec-st3u; if(pt3u<0){ pt3u+=1000000; pt3s--; } } if(mapflg==1&&(dsf2s bb[km]){ if(kmin==km) ends=1; return; } if(nr[km][ns[km]]==1){goto S161;} for(n=ns[km]; n<=ne[km]; n++){ if(d2[n]==200){ ns[km]=n; ne[km]=ns[km]+iy[i][km]-1; goto S161; } } if(d2[ns[km]-1]==100){ goto S161;} if(d2[ne[km]+1]==100){ goto S161;} for(n=ne[km-1]+1; n=kmin; p--){ bb[p]=bed; bed=bed-iy[i][p]-1; } gettime(); st4s=getsec; st4u=getusec; pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } for(j=ls-1;j<=le+1;j++) d2[j]=data[j][i]; if((le-ls+1)=le-cc10&&j>=ls;j--){ if(d2[j]==0){ uus(iy[i][kmin]); d2[j]=200; z3=0; uubchecky(i,kmin,ns); if(z3==0){ map(i,j,'y',100); d2[j]=100; uue(i,'y'); } else{ uus(iy[i][kmin]); d2[j]=100; z3=0; uubchecky(i,kmin,ns); if(z3==0){ map(i,j,'y',200); d2[j]=200; uue(i,'y'); } else d2[j]=0; } } } gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } pt4s=getsec-st4s; pt4u=getusec-st4u; if(pt4u<0){ pt4u+=1000000; pt4s--; } nowvsec=pt1s; ffys[i]=pt4s; ffyu[i]=pt4u; if(mapflg==0){ eflag4=2; while(eflag4){ eflag4=0; for(j=1;j<=yokomax;j++){ if(newy[j]==100) bcheck2y(j); if(maperr==1) return; } for(j=1;j<=tatemax;j++){ if(newt[j]==100) bcheck2t(j); if(maperr==1) return; } } } /* pchecky2(i); qchecky2(i); if(iy[i][KFIN]==0){ lse(i,'y'); for(j=kmin;j<=kmax;j++){ sum1iy( i,j,j,ssy[i][j],eey[i][j]); batu1iy(i,j,j,ssy[i][j],eey[i][j]); } } */ } newy2[i]=0; } void uuacheckt(int i){ int j,k,m,p,pp,sm,n,pflag,cc10; pcheckt2(i); qcheckt2(i); if(it[i][KFIN]==0){ lse(i,'t'); lsa=ls; lea=le; k1=kmax-kmin+1; bed=le; for(p=kmax; p>=kmin; p--){ bb[p]=bed; bed=bed-it[i][p]-1; } gettime(); st4s=getsec; st4u=getusec; pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } for(j=ls-1;j<=le+1;j++) d2[j]=data[i][j]; if((le-ls+1)=le-cc10&&j>=ls;j--){ if(d2[j]==0){ uus(it[i][kmin]); d2[j]=200; z3=0; uubcheckt(i,kmin,ns); if(z3==0){ map(i,j,'t',100); d2[j]=100; uue(i,'t'); } else{ uus(it[i][kmin]); d2[j]=100; z3=0; uubcheckt(i,kmin,ns); if(z3==0){ map(i,j,'t',200); d2[j]=200; uue(i,'t'); } else d2[j]=0; } } } gettime(); pt1s=getsec-st1s+tt1s; pt1u=getusec-st1u; if(pt1u<0){ pt1u+=1000000; pt1s--; } pt4s=getsec-st4s; pt4u=getusec-st4u; if(pt4u<0){ pt4u+=1000000; pt4s--; } nowvsec=pt1s; ffts[i]=pt4s; fftu[i]=pt4u; if(mapflg==0){ eflag4=2; while(eflag4){ eflag4=0; for(j=1;j<=yokomax;j++){ if(newy[j]==100) bcheck2y(j); if(maperr==1) return; } for(j=1;j<=tatemax;j++){ if(newt[j]==100) bcheck2t(j); if(maperr==1) return; } } } /* pcheckt2(i); qcheckt2(i); if(it[i][KFIN]==0){ lse(i,'t'); for(j=kmin;j<=kmax;j++){ sum1it( i,j,j,sst[i][j],eet[i][j]); batu1it(i,j,j,sst[i][j],eet[i][j]); } } */ } newt2[i]=0; } void scheckt(){ int i,k,m,qs,n,p,j,j2,pp; for(i=1;i<=tatemax;i++){ pcheckt2(i); if(it[i][KFIN]==0){ k=it[i][KKK]; j=1; m=1; while(data[i][j]!=0 && m<=k && 1<=j&&j<=yokomax){ if(data[i][j]==100){ n=it[i][m]; while(n>0){ map(i,j,'t',100); if(maperr==1) return; n--; j++; } if(1<=j&&j<=yokomax){ map(i,j,'t',200); if(maperr==1) return; } m++; } else if(data[i][j]==200); else goto SCHT1; j++; } SCHT1: j=yokomax; m=k; while(data[i][j]!=0 && m>=1 && 1<=j&&j<=yokomax){ if(data[i][j]==100){ n=it[i][m]; while(n>0){ map(i,j,'t',100); if(maperr==1) return; n--; j--; } if(1<=j&&j<=yokomax){ map(i,j,'t',200); if(maperr==1) return; } m--; } else if(data[i][j]==200); else goto SCHT2; j--; } SCHT2:i=i; } } } void schecky(){ int i,k,m,qs,n,p,j,j2,pp; for(i=1;i<=yokomax;i++){ pchecky2(i); if(iy[i][KFIN]==0){ k=iy[i][KKK]; j=1; m=1; while(data[j][i]!=0 && m<=k && 1<=j&&j<=tatemax){ if(data[j][i]==100){ n=iy[i][m]; while(n>0){ map(i,j,'y',100); if(maperr==1) return; n--; j++; } if(1<=j&&j<=tatemax){ map(i,j,'y',200); if(maperr==1) return;} m++; } else if(data[j][i]==200); else goto SCHY1; j++; } SCHY1: j=tatemax; m=k; while(data[j][i]!=0 && m>=1 && 1<=j&&j<=tatemax){ if(data[j][i]==100){ n=iy[i][m]; while(n>0){ map(i,j,'y',100); if(maperr==1) return; n--; j--; } if(1<=j&&j<=tatemax){ map(i,j,'y',200); if(maperr==1) return;} m--; } else if(data[j][i]==200); else goto SCHY2; j--; } SCHY2:i=i; } } } int katei3all(){ int i,j,k,m,asa; infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } g_rgb(0xffffff); g_fill(0,0,230,30); g_rgb(0x0000ff); g_text(20,20,"--sukima2a Katei--"); for(i=1;i<=yokomax;i++){ m=0; for(j=1;j<=tatemax;j++){ if(data[j][i]==0) m++; } if(m==2){ for(j=tatemax;j>=1;j--){ if(data[j][i]==0){ infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } if(data[j][i]==0){ k=katei3a(i,j); if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } }} } } g_rgb(0xffffff); g_fill(0,0,230,30); g_rgb(0x0000ff); g_text(20,20,"--sukima2b Katei--"); infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } for(j=1;j<=tatemax;j++){ m=0; for(i=1;i<=yokomax;i++){ if(data[j][i]==0) m++; } if(m==2){ for(i=yokomax;i>=1;i--){ if(data[j][i]==0){ infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } if(data[j][i]==0){ k=katei3a(i,j); if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; //movedata(data,data2,ht,ht2,hy,hy2,it,it2,iy,iy2); } }} } } g_rgb(0xffffff); g_fill(0,0,230,30); g_rgb(0x0000ff); g_text(20,20,"--sukima3a Katei--"); infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } for(i=1;i<=yokomax;i++){ m=0; for(j=1;j<=tatemax;j++){ if(data[j][i]==0) m++; } if(m==3){ for(j=tatemax;j>=1;j--){ if(data[j][i]==0){ infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } if(data[j][i]==0){ k= katei3a(i,j); if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; //movedata(data,data2,ht,ht2,hy,hy2,it,it2,iy,iy2); } }} } } g_rgb(0xffffff); g_fill(0,0,230,30); g_rgb(0x0000ff); g_text(20,20,"--sukima3b Katei--"); infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } for(j=1;j<=tatemax;j++){ m=0; for(i=1;i<=yokomax;i++){ if(data[j][i]==0) m++; } if(m==3){ for(i=yokomax;i>=1;i--){ if(data[j][i]==0){ infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } if(data[j][i]==0){ k= katei3a(i,j); if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; //movedata(data,data2,ht,ht2,hy,hy2,it,it2,iy,iy2); } }} } } g_rgb(0xffffff); g_fill(0,0,230,30); g_rgb(0x0000ff); g_text(20,20,"--sukima4a Katei--"); infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } for(i=1;i<=yokomax;i++){ m=0; for(j=1;j<=tatemax;j++){ if(data[j][i]==0) m++; } if(m==4){ for(j=1;j<=tatemax;j++){ if(data[j][i]==0){ infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } if(data[j][i]==0){ k=katei3a(i,j); if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; //movedata(data,data2,ht,ht2,hy,hy2,it,it2,iy,iy2); } }} } } g_rgb(0xffffff); g_fill(0,0,230,30); g_rgb(0x0000ff); g_text(20,20,"--sukima4b Katei--"); infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } for(j=1;j<=tatemax;j++){ m=0; for(i=1;i<=yokomax;i++){ if(data[j][i]==0) m++; } if(m==4){ for(i=1;i<=yokomax;i++){ if(data[j][i]==0){ infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } if(data[j][i]==0){ k=katei3a(i,j); if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; //movedata(data,data2,ht,ht2,hy,hy2,it,it2,iy,iy2); } }} } } if(k==10) return 10; if(fincount()==1) return 10; return 0; } int katei1(){ int nflg=0,i,j,k,n1,n2,n3,i2,j2; int nuriQ,nurix,nuriold,da; mapflg=1; g_rgb(0xffffff); g_fill(0,0,230,30); g_rgb(0x0000ff); g_text(20,20,"--Kado1 Katei--"); infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } j=1; i=1; if(data[j][i] ==00){ k=katei3a(i,j); if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } j=tatemax; i=1; if(data[j][i] ==00){ k=katei3a(i,j); if(k==10) return 10; if(k==1) return 1; if(fincount()==1) return 10; } j=1; i=yokomax; if(data[j][i] ==00){ k=katei3a(i,j); if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } j=tatemax; i=yokomax; if(data[j][i] ==00){ k=katei3a(i,j); if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } return 0; } int katei2(){ int nflg=0,i,j,k,n1,n2,n3,i2,j2,h=8; int nuriQ,nurix,nuriold,da,c1=2; mapflg=1; g_rgb(0xffffff); g_fill(0,0,230,20); g_rgb(0x0000ff); g_text(20,20,"--Kado2 Katei--"); infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } K2TOP: mujunflg=0; j=1; for(i=1;i<=h;i++){ if(data[j][i] ==00){ k=katei3a(i,j); //if(mujunflg) goto K2TOP; if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } } i2=i; i=1; for(j=2;j<=h;j++){ if(data[j][i] ==00){ k=katei3a(i,j); //if(mujunflg) goto K2TOP; if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } } j2=j; for(i=2;i=tatemax-h;j--){ if(data[j][i] ==00){ k=katei3a(i,j); //if(mujunflg) goto K2TOP; if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } } j2=j; for(i=2;ij2;j--){ if(data[j][i] ==00){ k=katei3a(i,j); //if(mujunflg) goto K2TOP; if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } } } i=yokomax; for(j=1;j<=h;j++){ if(data[j][i] ==00){ k=katei3a(i,j); //if(mujunflg) goto K2TOP; if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } } j2=j; j=1; for(i=yokomax-1;i>=yokomax-h;i--){ if(data[j][i] ==00){ k=katei3a(i,j); //if(mujunflg) goto K2TOP; if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } } i2=i; for(i=yokomax-1;i>i2;i--){ for(j=2;j=yokomax-h;i--){ if(data[j][i] ==00){ k=katei3a(i,j); //if(mujunflg) goto K2TOP; if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } } i2=i; i=yokomax; for(j=tatemax-1;j>=tatemax-h;j--){ if(data[j][i] ==00){ k=katei3a(i,j); //if(mujunflg) goto K2TOP; if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } } j2=j; for(i=yokomax-1;i>i2;i--){ for(j=tatemax-1;j>j2;j--){ if(data[j][i] ==00){ k=katei3a(i,j); // if(mujunflg) goto K2TOP; if(k==1) return 1; if(k==10) return 10; if(fincount()==1) return 10; } } } return 0; } int katei3(int i,int j){ int nflg=0,k,n1,n2,n3,i2,j2,no; int nuriQ,nurix,nuriold,da; if(data[j][i] == 0){ n1=n2=0; gcdatabb->next=backboard_create(); gcdatabb=gcdatabb->next; gcdatabb->back=gc2bb; infobb=gcdatabb->back; no=infobb->no; gcdatabb->no=no+1; gc2bb=gc2bb->next; //仮黒のロード if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } gcdatabb->jj=j; gcdatabb->ii=i; gcdatabb->jotai=100; map(j,i,'t',100); gettime(); st3s=getsec; st3u=getusec; maperr=0; gcdatabb->ltemp=22; lpph(); eflag3=0; n1=rote0(R1F,0); if(n1==10) return 10; gcdatabb->b3=eflag3; //仮黒のセーブ movedata(gcdatabb->data_black,data,gcdatabb->ht_black,ht,gcdatabb->hy_black,hy,gcdatabb->it_black,it,gcdatabb->iy_black,iy); movedata2(gcdatabb->sst_black,sst,gcdatabb->ssy_black,ssy,gcdatabb->eet_black,eet,gcdatabb->eey_black,eey); //仮白のロード if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } gcdatabb->jotai=200; map(j,i,'t',200); gettime(); st3s=getsec; st3u=getusec; maperr=0; gcdatabb->ltemp=33; lpph(); eflag3=0; n2=rote0(R1F,0); if(n2==10) return 10; gcdatabb->w3=eflag3; //仮白のセーブ movedata(gcdatabb->data_white,data,gcdatabb->ht_white,ht,gcdatabb->hy_white,hy,gcdatabb->it_white,it,gcdatabb->iy_white,iy); movedata2(gcdatabb->sst_white,sst,gcdatabb->ssy_white,ssy,gcdatabb->eet_white,eet,gcdatabb->eey_white,eey); if(n1==0&&n2==1){ //黒 if(gcdatabb->b3<(long)(tynuri/20)){ gcdatabb=gcdatabb->back; gc2bb=gcdatabb; gcdatabb->next=NULL; lpph(); } else{ lpph(); gcdatabb->jotai=100; infobb=gcdatabb; movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } } else if(n1==1&&n2==0){ //白 if(gcdatabb->w3<(long)(tynuri/20)){ gcdatabb=gcdatabb->back; gc2bb=gcdatabb; gcdatabb->next=NULL; lpph(); } else{ lpph(); gcdatabb->jotai=200; } } else if(n1==0&&n2==0){ if((gcdatabb->b3<(long)(tynuri/10))&&(gcdatabb->w3<(long)(tynuri/10))){ gcdatabb=gcdatabb->back; gc2bb=gcdatabb; gcdatabb->next=NULL; lpph(); } else{ gcdatabb->ltemp=1; lpph(); if(gcdatabb->mujun==0){ gcdatabb->mujun=2; gcdatabb->jotai=200; } else if(gcdatabb->mujun==1){ gcdatabb->mujun=2; gcdatabb->jotai=200; } else if(gcdatabb->mujun==2){ gcdatabb->mujun=3; gcdatabb->jotai=100; infobb=gcdatabb; movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } else if(gcdatabb->mujun==3){ gcdatabb->mujun=7; gcdatabb->ltemp=7; gcdatabb->jotai=0; return 5; } lpph(); } } else if(n1==1&&n2==1){ gcdatabb->ltemp=2; lpph(); if((gcdatabb->mujun==0||gcdatabb->mujun==3)&&gcdatabb->no>0){ gcdatabb->mujun=0;gcdatabb->ltemp=0; gcdatabb->jotai=0; //infobb=gcdatabb; while((gcdatabb->mujun==0||gcdatabb->mujun==3)&&gcdatabb->no>0){ gcdatabb=gcdatabb->back; gcdatabb->next=NULL; gc2bb=gcdatabb; } if(gcdatabb->mujun==1){ gcdatabb->mujun=2; gcdatabb->jotai=200; infobb=gcdatabb; movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } else if(gcdatabb->mujun==2){ gcdatabb->mujun=3; gcdatabb->jotai=100; infobb=gcdatabb; movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } } else if(gcdatabb->jotai==100){ gcdatabb->mujun=2; gcdatabb->jotai=200; infobb=gcdatabb; movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } else if(gcdatabb->jotai==200){ gcdatabb->mujun=3; gcdatabb->jotai=100; infobb=gcdatabb; movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(gcdatabb->no<=0){ g_rgb(0xff0000); g_text(20,20,"ERROR !:yrote n1=n2=1"); while(1) hantei(); exit(0); } } } return 0; } int katei3a(int i,int j){ //こっちが主に int nflg=0,k,n1,n2,n3,i2,j2; int nuriQ,nurix,nuriold,da,no; mujunflg=0; if(data[j][i] == 0){ n1=n2=0; gcdatabb->next=backboard_create(); gcdatabb=gcdatabb->next; gcdatabb->back=gc2bb; infobb=gcdatabb->back; no=infobb->no; gcdatabb->no=no+1; gc2bb=gc2bb->next; //仮黒のロード if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } gcdatabb->jj=j; gcdatabb->ii=i; gcdatabb->jotai=100; map(j,i,'t',100); gettime(); st3s=getsec; st3u=getusec; maperr=0; gcdatabb->ltemp=22; lpph(); eflag3=0; n1=rote0(R1F,0); if(n1==10) return 10; if(fincount()) return 10; gcdatabb->b1=n1; gcdatabb->b3=eflag3; //仮黒のセーブ movedata(gcdatabb->data_black,data,gcdatabb->ht_black,ht,gcdatabb->hy_black,hy,gcdatabb->it_black,it,gcdatabb->iy_black,iy); movedata2(gcdatabb->sst_black,sst,gcdatabb->ssy_black,ssy,gcdatabb->eet_black,eet,gcdatabb->eey_black,eey); //仮白のロード if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } gcdatabb->jotai=200; map(j,i,'t',200); gettime(); st3s=getsec; st3u=getusec; maperr=0; gcdatabb->ltemp=33; lpph(); eflag3=0; n2=rote0(R1F,0); if(n2==10) return 10; if(fincount()) return 10; gcdatabb->w1=n2; gcdatabb->w3=eflag3; //仮白のセーブ movedata(gcdatabb->data_white,data,gcdatabb->ht_white,ht,gcdatabb->hy_white,hy,gcdatabb->it_white,it,gcdatabb->iy_white,iy); movedata2(gcdatabb->sst_white,sst,gcdatabb->ssy_white,ssy,gcdatabb->eet_white,eet,gcdatabb->eey_white,eey); if(n1==0&&n2==1){ //黒 //if(gcdatabb->b3<(long)(tynuri/200)){ if(0){ gcdatabb=gcdatabb->back; gc2bb=gcdatabb; gcdatabb->next=NULL; lpph(); } else{ lpph(); //黒 gcdatabb->jotai=100; infobb=gcdatabb; movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } } else if(n1==1&&n2==0){ //白 if(((gcdatabb->b3-gcdatabb->w3)>tynuri/A12)&&(tatemax*yokomax==10000)){ //if(0){ gcdatabb->ltemp=46; lpph(); da=try1(); if(da==10) return 10; } else{ lpph(); //白 gcdatabb->jotai=200; } } else if(n1==0&&n2==0){ //どっちつかず,katei3a() //if((gcdatabb->b3<(long)(tynuri/100))&&(gcdatabb->w3<(long)(tynuri/100))){ if(0){ gcdatabb=gcdatabb->back; gc2bb=gcdatabb; gcdatabb->next=NULL; lpph(); } else{ gcdatabb->ltemp=1; lpph(); if(gcdatabb->mujun==0){ gcdatabb->mujun=1; gcdatabb->jotai=100; } else if(gcdatabb->mujun==1){ gcdatabb->mujun=2; gcdatabb->jotai=200; } else if(gcdatabb->mujun==2){ gcdatabb->mujun=7;gcdatabb->ltemp=7; gcdatabb->jotai=0; return 5; } lpph(); } } else if(n1==1&&n2==1){ mujunflg=1; gcdatabb->ltemp=2; lpph(); if((gcdatabb->mujun==0||gcdatabb->mujun>=2)&&gcdatabb->no>0){ gcdatabb->mujun=0;gcdatabb->ltemp=0; gcdatabb->jotai=0; // infobb=gcdatabb; while((gcdatabb->mujun==0||gcdatabb->mujun>=2)&&gcdatabb->no>0){ gcdatabb=gcdatabb->back; gcdatabb->next=NULL; gc2bb=gcdatabb; } if(gcdatabb->mujun==1){ gcdatabb->mujun=2; gcdatabb->jotai=200; infobb=gcdatabb; movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } } else if(gcdatabb->jotai==100){ gcdatabb->mujun=2; gcdatabb->jotai=200; infobb=gcdatabb; movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } if(gcdatabb->no<=0){ g_rgb(0xff0000); g_text(20,20,"ERROR !:yrote n1=n2=1"); while(1) hantei(); exit(0); } } } return 0; } int nokori10(int i, int j){ int nflg=0,i1,j1,k,n1,n2,n3; int nuriQ,nurix,nuriold,da; return 0; } int nokori20(){ int nflg=0,i,j,i1,j1,k,m,n1,n2,n3; int nuriQ,nurix,nuriold,da; FILE *ft; NNTOP: mujunflg=0; infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } i=1; for(j=1;j<=tatemax;j++){ if(data[j][i]==0){ infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } infobb->ltemp=71; lpph(); /* for(j1=1;j1<=tatemax;j1++){ if(data[j1][i]==0){ j=j1; goto NN11; } } NN11: */ if(data[j][i]==0){ //m=nokori10(i,j); m=katei3a(i,j); if(m==1) return 1; if(m==10) return 10; if(fincount()==1) return 10; } } } infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } i=yokomax; for(j=tatemax;j>=1;j--){ if(data[j][i]==0){ infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } infobb->ltemp=72; lpph(); /* for(j1=tatemax;j1>=1;j1--){ if(data[j1][i]==0){ j=j1; goto NN12; } } NN12: */ if(data[j][i]==0){ //m=nokori10(i,j); m=katei3a(i,j); if(m==1) return 1; if(m==10) return 10; if(fincount()==1) return 10; } } } infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } j=1; for(i=1;i<=yokomax;i++){ if(data[j][i]==0){ infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } infobb->ltemp=73; lpph(); /* for(i1=1;i1<=yokomax;i1++){ if(data[j][i1]==0){ i=i1; goto NN13; } } NN13: */ if(data[j][i]==0){ //m=nokori10(i,j); m=katei3a(i,j); if(m==1) return 1; if(m==10) return 10; if(fincount()==1) return 10; } } } infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } j=tatemax; for(i=yokomax;i>=1;i--){ if(data[j][i]==0){ infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } infobb->ltemp=74; lpph(); /* for(i1=yokomax;i1>=1;i1--){ if(data[j][i1]==0){ i=i1; goto NN14; } } NN14: */ if(data[j][i]==0){ //m=nokori10(i,j); m=katei3a(i,j); if(m==1) return 1; if(m==10) return 10; if(fincount()==1) return 10; } } } infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } //i1=j1=0; for(i=2;i<=yokomax-1;i++){ for(j=2;j<=tatemax-1;j++){ if(data[j][i]==0){ infobb=gcdatabb; if(infobb->jotai==100){ movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); } if(infobb->jotai==200){ movedata(data,infobb->data_white,ht,infobb->ht_white,hy,infobb->hy_white,it,infobb->it_white,iy,infobb->iy_white); movedata2(sst,infobb->sst_white,ssy,infobb->ssy_white,eet,infobb->eet_white,eey,infobb->eey_white); } infobb->ltemp=80; lpph(); /* for(i1=i;i1<=yokomax-1;i1++){ for(j1=j;j1<=tatemax-1;j1++){ if(data[j1][i1]==0){ j=j1;i=i1; goto NN20; } } } NN20: */ if(data[j][i]==0){ //m=nokori10(i,j); m=katei3a(i,j); if(mujunflg){ i=gcdatabb->ii; j=gcdatabb->jj; } if(m==1) return 1; if(m==10) return 10; if(fincount()==1) return 10; } } } } //}} return 0; } int rote0(long dsfs,long dsfu){ int si,i,j; mapflg=1; dsf2s=dsfs; dsf2u=dsfu; esfs=0; esfu=320000; TT10=10; i=rote(dsfs,dsfu); if(fincount()==1) return 10; if(i==1) return 1; return 0; } int rote(long dsfs,long dsfu){ int si,i,j; mapflg=1; dsf2s=dsfs; dsf2u=dsfu; lpph(); gettime(); st3s=getsec; st3u=getusec; sprintf(sss,"TIME=%4ld.%06ld(sec)",pt1s,pt1u); g_rgb(0xffffff); g_fill(180,0,140,13); g_rgb(0xff0000); g_text(200,13,sss); sprintf(sss,"Dot=%ld/%ld",nuri,(long)tatemax*yokomax); g_rgb(0xffffff); g_fill(825,13,99,13); g_rgb(0x0000ff); g_text(830,26,sss); sprintf(sss,"b)esf=%3ld.%06ld",esfs,esfu); g_rgb(0xffffff); g_fill(850,38,160,13); g_rgb(0x0000ff); g_text(855,50,sss); for(i=0;i<=kk;i++){ //it[i][KFIN]=0; //iy[i][KFIN]=0; newt[i]=100; newy[i]=100; newt2[i]=100; newy2[i]=100; newt3[i]=100; newy3[i]=100; } newz2(); eflag=2; while(eflag>0){ eflag=0; gettime(); pt3s=getsec-st3s; pt3u=getusec-st3u; if(pt3u<0){ pt3u+=1000000; pt3s--; } sprintf(sss,"TIME=%4ld.%06ld(sec)",pt1s,pt1u); g_rgb(0xffffff); g_fill(180,0,140,13); g_rgb(0xff0000); g_text(200,13,sss); sprintf(sss,"TIME3=%4ld.%06ld(sec)",pt3s,pt3u); g_rgb(0xffffff); g_fill(340,13,140,13); g_rgb(0xff0000); g_text(350,26,sss); eflag=0; sprintf(sss,"Dot=%ld/%ld",nuri,(long)tatemax*yokomax); g_rgb(0xffffff); g_fill(825,13,99,13); g_rgb(0x0000ff); g_text(830,26,sss); sprintf(sss,"TYPE-RS %d",jcnt); g_rgb(0xffffff); g_fill(938,13,100,13); g_rgb(0x0000ff); g_text(940,26,sss); nowsec=(pt1s/BYO); if(oldsec!=nowsec){ oldsec=nowsec; mno_save1(); } newz2(); j=0; info=start; while(info&&j<500&&info->k<=TT10){ eflag2=0; fasj=j; if(info->ty=='t'&&info->k<=TT10){ uucheckt(info->i); if(maperr==1) return 1;} if(info->ty=='y'&&info->k<=TT10){ uuchecky(info->i); if(maperr==1) return 1;} gettime(); pt3s=getsec-st3s; pt3u=getusec-st3u; if(pt3u<0){ pt3u+=1000000; pt3s--; } if(fincount()==1) return 10; if(maperr==1) return 1; j++; info=info->next; } if(eflag!=0) goto USKIP2; newz2(); j=0; info=start; while(info&&j<500){ eflag2=0; fasj=j; if(info->ty=='t'){ uucheckt(info->i); if(maperr==1) return 1;} if(info->ty=='y'){ uuchecky(info->i); if(maperr==1) return 1;} gettime(); pt3s=getsec-st3s; pt3u=getusec-st3u; if(pt3u<0){ pt3u+=1000000; pt3s--; } if(fincount()==1) return 10; if(maperr==1) return 1; j++; info=info->next; } if(eflag!=0) goto USKIP2; jcnt++; sprintf(sss,"TYPE-RA %d",jcnt); g_rgb(0xffffff); g_fill(938,13,100,13); g_rgb(0x0000ff); g_text(940,26,sss); newz2(); j=0; info=start; while(info&&j<500&&info->k<=TT10){ eflag2=0; fasj=j; if(info->ty=='t'&&info->k<=TT10){ uuacheckt(info->i); if(maperr==1) return 1;} if(info->ty=='y'&&info->k<=TT10){ uuachecky(info->i); if(maperr==1) return 1;} gettime(); pt3s=getsec-st3s; pt3u=getusec-st3u; if(pt3u<0){ pt3u+=1000000; pt3s--; } if(fincount()==1) return 10; if(maperr==1) return 1; j++; info=info->next; } if(eflag!=0) goto USKIP2; sprintf(sss,"TYPE-RB %d",jcnt); g_rgb(0xffffff); g_fill(938,13,100,13); g_rgb(0x0000ff); g_text(940,26,sss); newz2(); j=0; info=start; while(info&&j<500&&eflag<=TT25){ eflag2=0; fasj=j; if(info->ty=='t'){ uuacheckt(info->i); if(maperr==1) return 1;} if(info->ty=='y'){ uuachecky(info->i); if(maperr==1) return 1;} gettime(); pt3s=getsec-st3s; pt3u=getusec-st3u; if(pt3u<0){ pt3u+=1000000; pt3s--; } if(fincount()==1) return 10; if(maperr==1) return 1; j++; info=info->next; } if(eflag!=0) goto USKIP2; USKIP2: for(j=1;j<=yokomax;j++){ if(newy[j]==50) newy[j]=100; // if(newy[j]==100) newy2[j]=100; } for(j=1;j<=tatemax;j++){ if(newt[j]==50) newt[j]=100; //if(newt[j]==100) newt2[j]=100; } schecky(); if(maperr==1) return 1; scheckt(); if(maperr==1) return 1; else if(fincount()==1) return 10; /* bcheckt(); if(maperr==1) return 1; bchecky(); if(maperr==1) return 1; else if(fincount()==1) return 10; */ v2it(); if(maperr==1) return 1; v2iy(); if(maperr==1) return 1; else if(fincount()==1) return 10; loop1++; } return 0; } void printi(char yt,int i){ int j,k,l; if(yt=='y'){ printf("%c,%03d:",yt,i); for(l=1;l<=tatemax;l++){ printf("%d",l%10); } printf("\n"); printf("%c,%03d:",yt,i); for(l=1;l<=tatemax;l++){ if(data[l][i]==0) printf("_"); if(data[l][i]==100) printf("Q"); if(data[l][i]==200) printf("x"); } printf("\n"); k=iy[i][KKK]; j=1; while(j<=k){ if(hy[i][j]<4){ printf("\33[31m %d[%d,%d](%d,%d),\33[0m",iy[i][j],hy[i][j],uy[i][j], ssy[i][j],eey[i][j]); } else{ printf(" %d[%d,%d](%d,%d),",iy[i][j],hy[i][j],uy[i][j], ssy[i][j],eey[i][j]); } j++; } lse(i,'y'); printf(" kmin=%d,kmax=%d,ls=%d le=%d ",kmin,kmax,ls,le); printf("\n"); } if(yt=='t'){ printf("%c,%03d:",yt,i); for(l=1;l<=yokomax;l++){ printf("%d",l%10); } printf("\n"); printf("%c,%03d:",yt,i); for(l=1;l<=yokomax;l++){ if(data[i][l]==0) printf("_"); if(data[i][l]==100) printf("Q"); if(data[i][l]==200) printf("x"); } printf("\n"); k=it[i][KKK]; j=1; while(j<=k){ if(ht[i][j]<4){ printf("\33[31m %d[%d,%d](%d,%d),\33[0m",it[i][j],ht[i][j],ut[i][j], sst[i][j],eet[i][j]); } else{ printf(" %d[%d,%d](%d,%d),",it[i][j],ht[i][j],ut[i][j], sst[i][j],eet[i][j]); } j++; } lse(i,'t'); printf(" kmin=%d,kmax=%d,ls=%d le=%d ",kmin,kmax,ls,le); printf("\n"); } } void ccheckt(){ int i,j,k,l,m,p,r,n,aflag; for(i=1;i<=tatemax;i++){ if(it[i][KFIN]==0){ k=it[i][KKK]; for(j=1;j1;j--){ if(sst[i][j]>eet[i][j-1]){ for(m=sst[i][j]-1;m>=eet[i][j-1]+1;m--){ if(data[i][m]==0){ map(i,m,'t',200); if(maperr==1) return; } } } } } } } void cchecky(){ int i,j,k,l,m,p,r,n,aflag; for(i=1;i<=yokomax;i++){ if(iy[i][KFIN]==0){ k=iy[i][KKK]; for(j=1;j1;j--){ if(ssy[i][j]>eey[i][j-1]){ for(m=ssy[i][j]-1;m>=eey[i][j-1]+1;m--){ if(data[m][i]==0){ map(i,m,'y',200); if(maperr==1) return; } } } } } } } void uniqy(){ int i,j,k,l,l2,m,n; for(i=1;i<=yokomax;i++){ if(iy[i][KFIN]==0){ k=iy[i][KKK]; l=1; m=iy[i][l]; while(l<=k){ if(uy[i][l]==0){ m=iy[i][l]; n=0; l2=l; while(l2<=k){ if(m==iy[i][l2]) n++; l2++; } l2=l; while(l2<=k){ if(m==iy[i][l2]) uy[i][l2]=n; l2++; } } l++; } } } } void uniqt(){ int i,j,k,l,l2,m,n; for(i=1;i<=tatemax;i++){ if(it[i][KFIN]==0){ k=it[i][KKK]; l=1; m=it[i][l]; while(l<=k){ if(ut[i][l]==0){ m=it[i][l]; n=0; l2=l; while(l2<=k){ if(m==it[i][l2]) n++; l2++; } l2=l; while(l2<=k){ if(m==it[i][l2]) ut[i][l2]=n; l2++; } } l++; } } } /* for(i=1;i<=yokomax;i++){ k=iy[i][KKK]; printf("%d:",i); for(j=1;j<=k;j++){ printf("%d(%d) ",iy[i][j],uy[i][j]); } printf("\n"); } for(i=1;i<=tatemax;i++){ k=it[i][KKK]; printf("%d:",i); for(j=1;j<=k;j++){ printf("%d(%d) ",it[i][j],ut[i][j]); } printf("\n"); } */ } void pcheckt3(int i){ int j,k,l,km,m,p,a,b,c,d,e; int n,aflag,lsum,lg,ax,bx; if(it[i][KFIN]==0){ fax1it(i,1,yokomax); k=it[i][KKK]; a=0; for(j=1;j<=mmax;j++){ if(fup[j]==1){ a++; if(it[i][a]==fdw[j]){} else return; } } if(a==k){ for(j=1;j<=k;j++){ mark(i,j,'t',255); } swe( i,'t'); ksef(i,'t'); } } } void pchecky3(int i){ int j,k,l,km,m,p,a,b,c,d,e; int n,aflag,lsum,lg,ax,bx; if(iy[i][KFIN]==0){ fax1iy(i,1,tatemax); k=iy[i][KKK]; a=0; for(j=1;j<=mmax;j++){ if(fup[j]==1){ a++; if(iy[i][a]==fdw[j]){} else return; } } if(a==k){ for(j=1;j<=k;j++){ mark(i,j,'y',255); } swe( i,'y'); ksef(i,'y'); } } } void lpph(){ g_rgb(0xffffff); g_fill(795,70,230,500); g_rgb(0xcc0033); lpp=startbb; while(lpp){ sprintf(sss,"%02d %3d %3d %3d %3d %2d B%dW%d b%ldw%ld",lpp->no,lpp->ii,lpp->jj,lpp->jotai,lpp->mujun,lpp->ltemp,lpp->b1,lpp->w1,lpp->b3,lpp->w3); g_text(800,80+lpp->no*10,sss); lpp=lpp->next; } } int try1(){ int n1,n2,no; gcdataff=backboard_create(); gcdataff->ii=gcdatabb->ii; gcdataff->jj=gcdatabb->jj; gcdataff->b3=gcdatabb->b3; gcdataff->mujun=gcdatabb->mujun; gcdataff->jotai=gcdatabb->jotai; TRY123: gcdatabb=startbb; while(gcdatabb){ gc2bb=gcdatabb; gcdatabb=gcdatabb->next; } gcdatabb=gc2bb; gcdatabb->mujun=0;gcdatabb->ltemp=0; gcdatabb->jotai=0; while((gcdatabb->mujun==0||gcdatabb->mujun>=2)&&gcdatabb->no>0){ gcdatabb=gcdatabb->back; gcdatabb->next=NULL; gc2bb=gcdatabb; } gcdatabb->mujun=2; gcdatabb->jotai=200; if(gcdatabb->no<=0){ g_rgb(0xff0000); g_text(20,20,"ERROR !:yrote n1=n2=1"); while(1) hantei(); exit(0); } gcdatabb=gc2bb=startbb->next; while(gcdatabb){ if(gcdatabb->mujun/*(gcdatabb->b3>10)*/||(gcdatabb->b3>tynuri/A12)||(gcdatabb->w3>tynuri/A12)){ /* if((gcdatabb->b3>tynuri/A12)&&(gcdatabb->w3>tynuri/A12)){ } else if((gcdatabb->b3>tynuri/A12)&&(gcdatabb->w3mujun=0; //gcdatabb->jotai=100; gcdatabb->ltemp=52; } else if((gcdatabb->b3w3>tynuri/A12)){ gcdatabb->mujun=0; //gcdatabb->jotai=200; gcdatabb->ltemp=53; } */ } else{ if(gcdatabb->next){ gc2bb=gcdatabb->back; infobb=gcdatabb->next; gc2bb->next=infobb; infobb->back=gc2bb; gcdatabb=NULL; gcdatabb=gc2bb; } else{ gc2bb=gcdatabb->back; gc2bb->next=NULL; gcdatabb=gc2bb; } } gc2bb=gcdatabb; gcdatabb=gcdatabb->next; } no=1; gcdatabb=gc2bb; if(gcdataff){ gcdatabb->next=backboard_create(); gcdatabb=gcdatabb->next; gcdatabb->back=gc2bb; gc2bb=gc2bb->next; gcdatabb->ii=gcdataff->ii; gcdatabb->jj=gcdataff->jj; gcdatabb->mujun=0; gcdatabb->jotai=100; gcdatabb->ltemp=117; /* if((gcdataff->b3)>(tynuri/A15)){ if(gcdataff->mujun==0){ gcdatabb->mujun=1; gcdatabb->jotai=100; gcdatabb->ltemp=119; } else{ gcdatabb->mujun=2; gcdatabb->jotai=200; gcdatabb->ltemp=121; } } */ gcdataff=NULL; } infobb=startbb; movedata(data,infobb->data_black,ht,infobb->ht_black,hy,infobb->hy_black,it,infobb->it_black,iy,infobb->iy_black); movedata2(sst,infobb->sst_black,ssy,infobb->ssy_black,eet,infobb->eet_black,eey,infobb->eey_black); gcdatabb=startbb->next; while(gcdatabb){ gcdatabb->no=no++; map(gcdatabb->jj,gcdatabb->ii,'t',gcdatabb->jotai); gc2bb=gcdatabb; gcdatabb=gcdatabb->next; } //lpph(); gettime(); st3s=getsec; st3u=getusec; maperr=0; gcdatabb=gc2bb; gcdatabb->ltemp=47; lpph(); eflag3=0; n1=rote0(R1F,0); if(gcdatabb->jotai==100){ gcdatabb->b1=n1; gcdatabb->b3=eflag3; //仮黒のセーブ movedata(gcdatabb->data_black,data,gcdatabb->ht_black,ht,gcdatabb->hy_black,hy,gcdatabb->it_black,it,gcdatabb->iy_black,iy); movedata2(gcdatabb->sst_black,sst,gcdatabb->ssy_black,ssy,gcdatabb->eet_black,eet,gcdatabb->eey_black,eey); } if(gcdatabb->jotai==200){ gcdatabb->w1=n1; gcdatabb->w3=eflag3; //仮白のセーブ movedata(gcdatabb->data_white,data,gcdatabb->ht_white,ht,gcdatabb->hy_white,hy,gcdatabb->it_white,it,gcdatabb->iy_white,iy); movedata2(gcdatabb->sst_white,sst,gcdatabb->ssy_white,ssy,gcdatabb->eet_white,eet,gcdatabb->eey_white,eey); } if(n1==10) return 10; if(n1==1){ printf("8040\n"); //n1=1, escape ~~goto TRY123 mujunflg=1; goto TRY123; } return 0; }