-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathspiralNumbers.R
More file actions
executable file
·92 lines (90 loc) · 2.24 KB
/
spiralNumbers.R
File metadata and controls
executable file
·92 lines (90 loc) · 2.24 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
84
85
86
87
88
89
90
91
92
# Construct a square matrix with a size N × N containing integers from 1 to N *
# N in a spiral order, starting from top-left and in clockwise direction.
#
# Example
#
# For n = 3, the output should be
#
# spiralNumbers(n) = [[1, 2, 3], [8, 9, 4], [7, 6, 5]]
#
# Input/Output
#
# [execution time limit] 5 seconds (r)
#
# [input] integer n
#
# Matrix size, a positive integer.
#
# Guaranteed constraints: 3 ≤ n ≤ 100.
#
# [output] array.array.integer
#
#
#spiral instead of inverted spiral
spiralNumbers <- function(n) {
outputmatrix <- matrix(data = 0,
nrow = n,
ncol = n)
rowind = 1;
colind = 1;
value = 1;
outputmatrix[rowind,colind] = value;
value = value + 1;
for (ind in 1:(ceiling(n/2))) {
while(colind < (n - ind + 1)) {
colind = colind + 1;
outputmatrix[rowind,colind] = value;
value = value + 1;
}
while(rowind < (n - ind + 1)) {
rowind = rowind + 1;
outputmatrix[rowind,colind] = value;
value = value + 1;
}
while(colind > (ind)) {
colind = colind - 1;
outputmatrix[rowind,colind] = value;
value = value + 1;
}
while(rowind > (ind +1)) {
rowind = rowind - 1;
outputmatrix[rowind,colind] = value;
value = value + 1;
}
}
return(outputmatrix)
}
#hehe I wrote for inverted spiral. Question expects spiral.
# spiralNumbers <- function(n) {
# outputmatrix <- matrix(data = 0,
# nrow = n,
# ncol = n)
# rowind = n;
# colind = n;
# value = 1;
# for (ind in 1:(ceiling(n/2))) {
# outputmatrix[rowind,colind] = value;
# value = value + 1;
# while(rowind > (ind)) {
# rowind = rowind - 1;
# outputmatrix[rowind,colind] = value;
# value = value + 1;
# }
# while(colind > (ind)) {
# colind = colind - 1;
# outputmatrix[rowind,colind] = value;
# value = value + 1;
# }
# while(rowind < (n - ind + 1)) {
# rowind = rowind + 1;
# outputmatrix[rowind,colind] = value;
# value = value + 1;
# }
# while(colind < (n - ind)) {
# colind = colind + 1;
# outputmatrix[rowind,colind] = value;
# value = value + 1;
# }
# }
# return(outputmatrix)
# }