Write a program (or explain how to do it) that will display a descending "spiral" of NxN numbers, using constant space (no arrays allowed). For example, here's what the spiral looks like for N=10:
99 98 97 96 95 94 93 92 91 90
64 63 62 61 60 59 58 57 56 89
65 36 35 34 33 32 31 30 55 88
66 37 16 15 14 13 12 29 54 87
67 38 17 4 3 2 11 28 53 86
68 39 18 5 0 1 10 27 52 85
69 40 19 6 7 8 9 26 51 84
70 41 20 21 22 23 24 25 50 83
71 42 43 44 45 46 47 48 49 82
72 73 74 75 76 77 78 79 80 81
This was done in VBA
Function Spiral(i As Integer, j As Integer, n As Integer) As Integer
If n = 1 Or n = 0 Then
Spiral = 0
ElseIf i = 1 Then
Spiral = 4 * n - 4 - j + Spiral(1, 1, n - 2) - (n > 2)
ElseIf j = n Then
Spiral = 3 * n - 3 - i + Spiral(1, 1, n - 2) - (n > 2)
ElseIf i = n Then
Spiral = n - 3 + j + Spiral(1, 1, n - 2) - (n > 2)
ElseIf j = 1 Then
Spiral = i - 2 + Spiral(1, 1, n - 2) - (n > 2)
Else
Spiral = Spiral(i - 1, j - 1, n - 2)
End If
End Function
|
Posted by AJ
on 2003-09-05 01:02:47 |