-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgrid.html
59 lines (47 loc) · 1.15 KB
/
grid.html
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
</body>
<script>
function printGrid(grid) {
for(var i = 0; i < grid.length; i++) {
console.log(grid[i].join(' '));
}
}
function create2DGrid(size) {
let i = size;
const grid = [];
while (i--) {
grid.push(new Array(size));
}
return grid;
}
function createSpiral(n) {
const spiral = create2DGrid(n);
let currentNumber = 1;
let i =0;
let j = 0;
let di = 0;
let dj = 1;
while(currentNumber <= n * n) {
spiral[i][j] = currentNumber++;
if( j + dj === n || i + di === n || j + dj === -1 || spiral[i + di][j + dj]) {
// when number riches far right corner it equals parametar number (n)
const tmpDi = di;
di = dj;
dj = -tmpDi;
}
i += di;
j += dj;
}
return spiral;
}
printGrid(createSpiral(10));
</script>
</html>