-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsnakeMatrix.js
More file actions
83 lines (75 loc) · 2.28 KB
/
snakeMatrix.js
File metadata and controls
83 lines (75 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/**
* Created by licheng on 16/4/4.
*/
function snake(n){
function createMatrix(n) {
var matrix = new Array(n)
for (var i = 0; i < n; i++) {
matrix[i] = new Array(n)
}
return matrix
}
var matrix = createMatrix(n)
padding(matrix,n)
console.log(matrix.toString())
function padding(m,n){
var d = 1 // 控制填充方向,初始化向右(1) ,向下(2),向左(3) 向上(4)
var a = 0, //a,b为二维数组索引
b = 0,
c = 1, // 方向改变变量,控制向右
i=1, //填充数字,从1到n*n
e = n, //控制改变方向的变量,控制向下
f=0 //方向改变变量,控制向左
while(i<= n*n){
//console.log(m)
if(d === 1){
if(!m[a][b]){
m[a][b] = i++
b++
if(b === e){
d = 2 //down
b--
a++
//console.log(a+'and'+b)
}
}else{
e--
a++ ;b++;
}
}else if(d === 2){
if(!m[a][b]){
m[a][b] = i++
a++
if(a === e){
d = 3 //left
b--
a--
}
}
}else if(d === 3){
if(!m[a][b]){
m[a][b] = i++
b--
if(b < f){
d = 4 //up
f++
a--
b++ //回到首位
}
}
}
else if(d === 4){
if(!m[a][b]){
// console.log(a+'and'+b)
m[a][b] = i++
a--
if(a<c){
c++
d = 1 //right
}
}
}
}
}
}
snake(3)