- 帖子
- 406
- 主題
- 8
- 精華
- 0
- 積分
- 453
- 點名
- 0
- 作業系統
- WINDOWS 7
- 軟體版本
- 2007
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2015-2-7
- 最後登錄
- 2021-7-31
|
回復 1# 准提部林
不知道現在回會不會太晚~
我用很直覺的寫法,走到底就轉彎~ - Sub 方陣1()
- Dim 邊界 As Byte
- Dim 邊 As Byte
- Dim X0 As Byte
- Dim Y0 As Byte
- Dim n As Integer
- Cells(5, 5).CurrentRegion = ""
- 邊界 = (Cells(1, 2) - 1) / 2
- X0 = 邊界 + 5: Y0 = 邊界 + 5
- n = 1: X = X0: Y = Y0: 邊 = 1
- Cells(Y, X) = n: n = n + 1
- 向右:
- If n = (邊 * 2 + 1) ^ 2 And 邊 < 邊界 Then 邊 = 邊 + 1
- If n = (邊 * 2 + 1) ^ 2 And 邊 = 邊界 Then GoTo 結尾
- If X + 1 - X0 > 邊 Then GoTo 向下
- X = X + 1: Cells(Y, X) = n: n = n + 1: GoTo 向右
- 向下:
- If Y + 1 - Y0 > 邊 Then GoTo 向左
- Y = Y + 1: Cells(Y, X) = n: n = n + 1: GoTo 向下
- 向左:
- If X - 1 - X0 < -邊 Then GoTo 向上
- X = X - 1: Cells(Y, X) = n: n = n + 1: GoTo 向左
- 向上:
- If Y - 1 - Y0 < -邊 Then GoTo 向右
- Y = Y - 1: Cells(Y, X) = n: n = n + 1: GoTo 向上
- 結尾:
- X = X + 1: Cells(Y, X) = n
- End Sub
- Sub 方陣2()
- Dim 邊界 As Byte
- Dim 邊 As Byte
- Dim X0 As Byte
- Dim Y0 As Byte
- Dim n As Integer
- Cells(5, 5).CurrentRegion = ""
- 邊界 = (Cells(1, 2) - 1) / 2
- X0 = 邊界 + 5: Y0 = 邊界 + 5
- n = 1: X = X0: Y = Y0: 邊 = 1
- Cells(Y, X) = "◎": n = n + 1
- 向右:
- If n = (邊 * 2 + 1) ^ 2 And 邊 < 邊界 Then 邊 = 邊 + 1
- If n = (邊 * 2 + 1) ^ 2 And 邊 = 邊界 Then GoTo 結尾
- If X + 1 - X0 > 邊 Then GoTo 向下
- X = X + 1
- If X - X0 = 邊 Then Cells(Y, X) = "┐" Else Cells(Y, X) = "→"
- n = n + 1: GoTo 向右
- 向下:
- If Y + 1 - Y0 > 邊 Then GoTo 向左
- Y = Y + 1
- If Y - Y0 = 邊 Then Cells(Y, X) = "┘" Else Cells(Y, X) = "↓"
- n = n + 1: GoTo 向下
- 向左:
- If X - 1 - X0 < -邊 Then GoTo 向上
- X = X - 1
- If X - X0 = -邊 Then Cells(Y, X) = "└" Else Cells(Y, X) = "←"
- n = n + 1: GoTo 向左
- 向上:
- If Y - 1 - Y0 < -邊 Then GoTo 向右
- Y = Y - 1
- If Y - Y0 = -邊 Then Cells(Y, X) = "┌" Else Cells(Y, X) = "↑"
- n = n + 1: GoTo 向上
- 結尾:
- X = X + 1: Cells(Y, X) = "●"
- End Sub
複製代碼 |
-
-
數獨.rar
(48.65 KB)
-
-
旋轉方陣.rar
(15.84 KB)
-
1
評分人數
-
|