var x = new Array();
var y = new Array();
var a = new Array();
var b = new Array();
var dir = new Array();
var number_dir = new Array();
var sig_a = new Array();
var sig_b = new Array();
function sample() {
tx = 0;
for (s = 1; s < 11; s++) {
for (sx = 1; sx < 11; sx++) {
tx = tx + 1;
x[tx] = s;
y[tx] = sx;
}
}
for (s = 1; s < 11; s++) {
a[s] = 1;
b[s] = 100;
}
for (t = 1; t < 101; t++) {
dir[t] = new Array();
}
for (t = 1; t < 101; t++) {
tx = 0;
for (s1 = -1; s1 < 2; s1++) {
for (s2 = -1; s2 < 2; s2++) {
x1 = x[t] + s1;
y1 = y[t] + s2;
sx = search(x1, y1);
if (sx == t) sx = 0;
if (sx > 0) tx = tx + 1;
if (sx > 0) dir[t][tx] = sx;
}
}
number_dir[t] = tx;
}
var timer;
var delay = 1000;
var loop = function () {
select_a();
select_b();
for(s=1;s<11;s++){
if(sig_a[s]==0) move_a(s);
}
for (s = 1; s < 11; s++) {
if (sig_b[s] == 0) move_b(s);
}
for (s = 1; s < 11; s++) {
sp = sig_a[s];
if (sp>0)def_a(s, sp);
}
for (s = 1; s < 11; s++) {
sp = sig_b[s];
if(sp>0) def_b(s, sp);
}
paint();
clearTimeout(timer);
timer = setTimeout(loop, delay);
}
loop();
}
function def_a(s1,s2) {
var s;
a1=a[s1];
a2=b[s2];
mind = 9999;
tx = a1;
for (sx = 1; sx < number_dir[a1] + 1; sx++) {
s2 = dir[a1][sx];
d1=(x[s2]-x[a2])*(x[s2]-x[a2])+(y[s2]-y[a2])*(y[s2]-y[a2]);
if (d1 < mind) tx = s2;
if (d1 < mind) mind = d1;
}
a[s1] = tx;
}
function def_b(s1, s2) {
var s;
a1 = a[s2];
a2 = b[s1];
mind = 9999;
tx = a1;
for (sx = 1; sx < number_dir[a2] + 1; sx++) {
s2 = dir[a2][sx];
d1 = (x[s2] - x[a1]) * (x[s2] - x[a1]) + (y[s2] - y[a1]) * (y[s2] - y[a1]);
if (d1 < mind) tx = s2;
if (d1 < mind) mind = d1;
}
b[s1] = tx;
}
function move_a(s) {
s1 = a[s];
var n1 = number_dir[s1] * Math.random();
var n2 = Math.floor(n1) + 1;
s2 = dir[s1][n2];
var c = new Array();
for (s4 = 1; s4 < 101; s4++) {
c[s4] = 0;
}
for (s4 = 1; s4 < 11; s4++) {
sx = a[s4];
c[sx] = 100;
sx = b[s4];
c[sx] = 100;
}
if (c[s2] < 50) a[s] = s2;
}
function select_a() {
var k=new Array();
for (s = 1; s < 11; s++) {
sx = b[s];
y1 = y[sx];
if (y1 < 5)sx=sx+1;
if (y1 < 5) k[sx] = s;
}
number_k = sx;
var ch = new Array();
var px = new Array();
for (s = 1; s < 11; s++) {
ch[s] = 0;
}
for (r = 1; r < number_k + 1; r++) {
mind = 999;
sx = 1;
for (s = 1; s < 11; s++) {
h = 0;
s1 = k[r];
s2=b[s1];
d1 = dis(a[s], s2);
h = 0;
if (d1 < mind) h = h + 1;
if (ch[s] < 50) h = h + 1;
if (h == 2) mind = d1;
if (h == 2) sx = s;
}
ch[sx] = 100;
px[r] = sx;
}
for (s = 1; s < 11; s++) {
sig_a[s] = 0;
}
for (r = 1; r < number_k + 1; r++) {
s1 = k[r];
s2 = px[r];
sig_a[s2] = s1;
}
}
function select_b() {
var k = new Array();
for (s = 1; s < 11; s++) {
sx = a[s];
y1 = y[sx];
if (y1 > 5) sx = sx + 1;
if (y1 > 5) k[sx] = s;
}
number_k = sx;
var ch = new Array();
var px = new Array();
for (s = 1; s < 11; s++) {
ch[s] = 0;
}
for (r = 1; r < number_k + 1; r++) {
mind = 999;
sx = 1;
for (s = 1; s < 11; s++) {
h = 0;
s1 = k[r];
s2=a[s1];
d1 = dis(b[s], s2);
h = 0;
if (d1 < mind) h = h + 1;
if (ch[s] < 50) h = h + 1;
if (h == 2) mind = d1;
if (h == 2) sx = s;
}
ch[sx] = 100;
px[r] = sx;
}
for (s = 1; s < 11; s++) {
sig_b[s] = 0;
}
for (r = 1; r < number_k + 1; r++) {
s1 = k[r];
s2 = px[r];
sig_b[s2] = s1;
}
}
function dis(s1, s2) {
d1 = (x[s2] - x[s1]) * (x[s2] - x[s1]) + (y[s2] - y[s1]) * (y[s2] - y[s1]);
return d1;
}
function move_b(s) {
s1 = b[s];
var n1 = number_dir[s1] * Math.random();
var n2 = Math.floor(n1) + 1;
s2 = dir[s1][n2];
var c = new Array();
for (s4 = 1; s4 < 101; s4++) {
c[s4] = 0;
}
for (s4 = 1; s4 < 11; s4++) {
sx = a[s4];
c[sx] = 100;
sx = b[s4];
c[sx] = 100;
}
if (c[s2] < 50) b[s] = s2;
}
function paint() {
var sub = new svgpaint();
str = "<svg width=\"500\" height=\"500\">";
for (s = 1; s < 11; s++) {
n1 = a[s];
str = str + sub.rect(50 * x[n1] - 50, 50 * y[n1] - 50, 50, 50, "red");
}
for (s = 1; s < 11; s++) {
n1 = b[s];
str = str + sub.rect(50 * x[n1] - 50, 50 * y[n1] - 50, 50, 50, "blue");
}
str = str + "</svg>";
$("#memo").html(str);
}
function search(x1, y1) {
var s, sx, h;
sx = 0;
for (s = 1; s < 101; s++) {
h = 0;
if (x[s] == x1) h = h + 1;
if (y[s] == y1) h = h + 1;
if (h == 2) sx = s;
}
return sx;
}
最終更新:2015年06月23日 00:21