var point=new Array();
var dir=new Array();
var number_dir=new Array();
var y=new Array();
var x=new Array();
var power=new Array();
var c=new Array();
function sample(){
power[1]=15;
power[2]=10;
c[1]=1;
c[2]=25;
tx=0;
for(s=1;s<6;s++){
for(sx=1;sx<6;sx++){
tx=tx+1;
x[tx]=s;
y[tx]=sx;
point[tx]=1;
if(Math.random()>0.5)point[tx]=2;
}
}
for(s=1;s<26;s++){
dir[s]=new Array();
}
var timer;
var delay = 100;
var loop = function () {
f();
paint();
clearTimeout(timer);
timer = setTimeout(loop, delay);
}
loop();
paint();
}
function f(){
for(s=1;s<26;s++){
tx=0;
for(sx=1;sx<26;sx++){
d=dis(s,sx);
if(s==sx)d=400;
if(d<2)tx=tx+1;
if(d<2)dir[s][tx]=sx;
}
number_dir[s]=tx;
}
minp=500;
sxs=0;
for(s=1;s<26;s++){
h=0;
if(point[s]==2)h=h+1;
d=dis(c[1],s);
if(d<minp)h=h+1;
h1=0;
for(sx=1;sx<number_dir[s]+1;sx++){
s1=dir[s][sx];
if(point[s1]==1)h1=100;
}
if(h1>50)h=h+1;
if(h==3)sxs=s;
if(h==3)minp=d;
}
var c1=0;
for(s=1;s<26;s++){
if(point[s]==1)c1=c1+1;
}
var c2=0;
for(s=1;s<26;s++){
if(point[s]==2)c2=c2+1;
}
p1=0;
for(sx=1;sx<number_dir[sxs]+1;sx++){
s1=dir[sxs][sx];
if(point[s1]==1)p1=p1+power[1]/c1;
}
p2=power[2]/c2;
if(p1>p2)point[sxs]=1;
minp=500;
sxs=0;
for(s=1;s<26;s++){
h=0;
if(point[s]==1)h=h+1;
d=dis(c[2],s);
if(d<minp)h=h+1;
h1=0;
for(sx=1;sx<number_dir[s]+1;sx++){
s1=dir[s][sx];
if(point[s1]==2)h1=100;
}
if(h1>50)h=h+1;
if(h==3)sxs=s;
if(h==3)minp=d;
}
var c1=0;
for(s=1;s<26;s++){
if(point[s]==1)c1=c1+1;
}
var c2=0;
for(s=1;s<26;s++){
if(point[s]==2)c2=c2+1;
}
p2=0;
for(sx=1;sx<number_dir[sxs]+1;sx++){
s1=dir[sxs][sx];
if(point[s1]==2)p2=p2+power[2]/c2;
}
p1=power[1]/c1;
if(p2>p1)point[sxs]=2;
}
function dis(s1,s2){
x1=x[s1]-x[s2];
y1=y[s1]-y[s2];
e1=x1*x1+y1*y1;
return Math.sqrt(e1);
}
function paint(){
var sub=new svgpaint();
str="<svg width=\"500\" height=\"500\">";
for(s=1;s<26;s++){
if(point[s]==1)str=str+sub.rect(50*x[s],50*y[s],50,50,"green");
if(point[s]==2)str=str+sub.rect(50*x[s],50*y[s],50,50,"red");
}
str=str+"</svg>";
$("#memo").html(str);
}
最終更新:2017年03月03日 09:02