59 lines
1.5 KiB
VB.net
59 lines
1.5 KiB
VB.net
Option Explicit
|
|
|
|
Sub Main()
|
|
print2dArray getSpiralArray(5)
|
|
End Sub
|
|
|
|
Function getSpiralArray(dimension As Integer) As Integer()
|
|
ReDim spiralArray(dimension - 1, dimension - 1) As Integer
|
|
|
|
Dim numConcentricSquares As Integer
|
|
numConcentricSquares = dimension \ 2
|
|
If (dimension Mod 2) Then numConcentricSquares = numConcentricSquares + 1
|
|
|
|
|
|
Dim j As Integer, sideLen As Integer, currNum As Integer
|
|
sideLen = dimension
|
|
|
|
Dim i As Integer
|
|
For i = 0 To numConcentricSquares - 1
|
|
' do top side
|
|
For j = 0 To sideLen - 1
|
|
spiralArray(i, i + j) = currNum
|
|
currNum = currNum + 1
|
|
Next
|
|
|
|
' do right side
|
|
For j = 1 To sideLen - 1
|
|
spiralArray(i + j, dimension - 1 - i) = currNum
|
|
currNum = currNum + 1
|
|
Next
|
|
|
|
' do bottom side
|
|
For j = sideLen - 2 To 0 Step -1
|
|
spiralArray(dimension - 1 - i, i + j) = currNum
|
|
currNum = currNum + 1
|
|
Next
|
|
|
|
' do left side
|
|
For j = sideLen - 2 To 1 Step -1
|
|
spiralArray(i + j, i) = currNum
|
|
currNum = currNum + 1
|
|
Next
|
|
|
|
sideLen = sideLen - 2
|
|
Next
|
|
|
|
getSpiralArray = spiralArray()
|
|
End Function
|
|
|
|
Sub print2dArray(arr() As Integer)
|
|
Dim row As Integer, col As Integer
|
|
For row = 0 To UBound(arr, 1)
|
|
For col = 0 To UBound(arr, 2) - 1
|
|
Debug.Print arr(row, col),
|
|
Next
|
|
Debug.Print arr(row, UBound(arr, 2))
|
|
Next
|
|
End Sub
|