返回列表 上一主題 發帖

[發問] 在方陣或矩陣中,以旋轉方式填入值

回復 1# 准提部林

不知道現在回會不會太晚~
我用很直覺的寫法,走到底就轉彎~
  1. Sub 方陣1()
  2. Dim 邊界 As Byte
  3. Dim 邊 As Byte
  4. Dim X0 As Byte
  5. Dim Y0 As Byte
  6. Dim n As Integer
  7. Cells(5, 5).CurrentRegion = ""
  8. 邊界 = (Cells(1, 2) - 1) / 2
  9. X0 = 邊界 + 5: Y0 = 邊界 + 5
  10. n = 1: X = X0: Y = Y0: 邊 = 1
  11. Cells(Y, X) = n: n = n + 1
  12. 向右:
  13. If n = (邊 * 2 + 1) ^ 2 And 邊 < 邊界 Then 邊 = 邊 + 1
  14. If n = (邊 * 2 + 1) ^ 2 And 邊 = 邊界 Then GoTo 結尾
  15. If X + 1 - X0 > 邊 Then GoTo 向下
  16. X = X + 1: Cells(Y, X) = n: n = n + 1: GoTo 向右
  17. 向下:
  18. If Y + 1 - Y0 > 邊 Then GoTo 向左
  19. Y = Y + 1: Cells(Y, X) = n: n = n + 1: GoTo 向下
  20. 向左:
  21. If X - 1 - X0 < -邊 Then GoTo 向上
  22. X = X - 1: Cells(Y, X) = n: n = n + 1: GoTo 向左
  23. 向上:
  24. If Y - 1 - Y0 < -邊 Then GoTo 向右
  25. Y = Y - 1: Cells(Y, X) = n: n = n + 1: GoTo 向上
  26. 結尾:
  27. X = X + 1: Cells(Y, X) = n
  28. End Sub

  29. Sub 方陣2()
  30. Dim 邊界 As Byte
  31. Dim 邊 As Byte
  32. Dim X0 As Byte
  33. Dim Y0 As Byte
  34. Dim n As Integer
  35. Cells(5, 5).CurrentRegion = ""
  36. 邊界 = (Cells(1, 2) - 1) / 2
  37. X0 = 邊界 + 5: Y0 = 邊界 + 5
  38. n = 1: X = X0: Y = Y0: 邊 = 1
  39. Cells(Y, X) = "◎": n = n + 1
  40. 向右:
  41. If n = (邊 * 2 + 1) ^ 2 And 邊 < 邊界 Then 邊 = 邊 + 1
  42. If n = (邊 * 2 + 1) ^ 2 And 邊 = 邊界 Then GoTo 結尾
  43. If X + 1 - X0 > 邊 Then GoTo 向下
  44. X = X + 1
  45. If X - X0 = 邊 Then Cells(Y, X) = "┐" Else Cells(Y, X) = "→"
  46. n = n + 1: GoTo 向右
  47. 向下:
  48. If Y + 1 - Y0 > 邊 Then GoTo 向左
  49. Y = Y + 1
  50. If Y - Y0 = 邊 Then Cells(Y, X) = "┘" Else Cells(Y, X) = "↓"
  51. n = n + 1: GoTo 向下
  52. 向左:
  53. If X - 1 - X0 < -邊 Then GoTo 向上
  54. X = X - 1
  55. If X - X0 = -邊 Then Cells(Y, X) = "└" Else Cells(Y, X) = "←"
  56. n = n + 1: GoTo 向左
  57. 向上:
  58. If Y - 1 - Y0 < -邊 Then GoTo 向右
  59. Y = Y - 1
  60. If Y - Y0 = -邊 Then Cells(Y, X) = "┌" Else Cells(Y, X) = "↑"
  61. n = n + 1: GoTo 向上
  62. 結尾:
  63. X = X + 1: Cells(Y, X) = "●"
  64. End Sub
複製代碼

數獨.rar (48.65 KB)

旋轉方陣.rar (15.84 KB)

1

評分人數

TOP

        靜思自在 : 【是否發揮了良能?】人間壽命因為短暫,才更顯得珍貴。難得來一趟人間,應問是否為人間發揮了自己的良能,而不要一味求長壽。
返回列表 上一主題