发现论坛最近还真热闹,发段R代码给大家助助兴[s:11]:
<br />
jumping <- function(n, size = 8) {<br />
par(mar = rep(0,4), bg = "cornsilk")<br />
plot(c(0,size), c(0,size), type = "n", xlab = "", ylab = "", axes = F)</p>
<p> for (x in 1:8)<br />
for (y in 1:8)<br />
rect(x - 1, y - 1, x, y, col = ifelse((x + y) %% 2 == 0, "black", NA))</p>
<p> k <- expand.grid(-2:2,-2:2)<br />
steps <- as.matrix(k[abs(apply(k, 1, prod)) == 2,])</p>
<p> shape <- data.frame(<br />
x = c(0.486,0.470,0.402,0.228,0.128,<br />
0.168,0.224,0.264,0.460,0.378,<br />
0.318,0.248,0.742,0.664,0.776,<br />
0.854,0.842,0.722,0.570),<br />
y = c(0.952,0.838,0.79,0.64,0.594,<br />
0.502,0.462,0.506,0.538,0.4,<br />
0.174,0.004,0.004,0.174,0.174,<br />
0.374,0.596,0.776,0.85))<br />
pos <- sample(1:size, 2, replace = T)</p>
<p> polygon(t(t(shape - 1) + pos), col = "gray")<br />
for (i in 1:n) {<br />
while (T) {<br />
pos2 <- pos + steps[sample(1:nrow(steps), 1),]<br />
if (all(pos2 %in% 1:size)) break<br />
}<br />
rect(pos[1] - 1, pos[2] - 1, pos[1], pos[2],<br />
col = ifelse(sum(pos) %% 2 == 0, "black", "cornsilk"), border = "black")<br />
polygon(t(t(shape - 1) + pos2), col = "gray")<br />
Sys.sleep(1)<br />
pos <- pos2<br />
}<br />
}</p>
<p>jumping(100)<br />
</p>