mag=0 for (t in 1:500){ gril=matrix(0,ncol=10,nrow=10) while (min(gril)==0){ prop=sample((1:100)[as.vector(gril)==0],1)-1 i=prop%/%10;j=prop%%10 samc=samr=NULL for (u in (0:9)[-(i+1)]){ if (gril[10*u+j+1]==1) samc=c(samc,u) } for (v in (0:9)[-(j+1)]){ if (gril[10*i+v+1]==1) samr=c(samr,v) } if ((length(samc)==0)&&(length(samr)==0)){ gril[prop+1]=1}else{ for (u in samc){ d=u-i for (w in ((1:100)[as.vector(gril)==1]-1)){ if ((w%%10!=j)&&(w-10*d>=0)&&(w-10*d<100)&&(gril[w-10*d+1]==1)) gril[prop+1]=2 if ((w%%10!=j)&&(w+10*d>=0)&&(w+10*d<100)&&(gril[w+10*d+1]==1)) gril[prop+1]=2 if (gril[prop+1]==2) break() } } if (gril[prop+1]==0){ for (v in samr) d=v-j for (w in ((1:100)[as.vector(gril)==1]-1)){ if ((w%/%10!=i)&&(w-d+1>0)&&(w-d<100)&&(w%/%10==(w-d)%/%10)&&(gril[w-d+1]==1)) gril[prop+1]=2 if ((w%/%10!=i)&&(w+d+1>0)&&(w+d<100)&&(w%/%10==(w+d)%/%10)&&(gril[w+d+1]==1)) gril[prop+1]=2 if (gril[prop+1]==2) break() } } if (gril[prop+1]==0){#proposal acceptable gril[prop+1]=1 for (u in samc){ d=u-i for (w in ((1:100)[as.vector(gril)==1]-1)){ if ((w%%10!=j)&&(w-10*d+1>0)&&(w-10*d<100)&&(gril[w-10*d+1]==0)) gril[w-10*d+1]=2 if ((w%%10!=j)&&(w+10*d+1>0)&&(w+10*d<100)&&(gril[w+10*d+1]==0)) gril[w+10*d+1]=2 }} for (v in samr){ d=v-j for (w in ((1:100)[as.vector(gril)==1]-1)){ if ((w%/%10!=i)&&(w-d+1>0)&&(w-d<100)&&(w%/%10==(w-d)%/%10)&&(gril[w-d+1]==0)) gril[w-d+1]=2 if ((w%/%10!=i)&&(w+d+1>0)&&(w+d<100)&&(w%/%10==(w+d)%/%10)&&(gril[w+d+1]==0)) gril[w+d+1]=2 }} } } } if (sum(gril==1)>mag){ mag=sum(gril==1) besgril=gril } } image(1:10,1:10,besgril,main=paste("size",mag,sep=""))