Swift 求正六边形网格中颜色相同且相邻的正六边形数量(递归)
如图所示,蓝色正六边形族的数量应该是 4 和 2。

下面介绍 Swift 代码的实现办法。
首先为正六边形进行编号,如图:

再为每个正六边形关联相邻的六边形,例如
- 1 - 2, 3, 4
- 2 - 1, 4, 6
关联好之后,以 1 号六边形为例:
- 将 1 号加入 check 数组 -> [1]
- 遍历 check 数组,将 1 号加入 blue 数组 -> [1];将 1 号加入 checked 数组 -> [1]
- 将 1 号关联六边形加入 check 数组 -> [2, 3, 4]
- 遍历 check 数组,提取蓝色正六边形 -> 3, 4,将其加入 blue 数组 -> [1, 3, 4],将 check 数组元素移至 checked 数组 -> [1, 2, 3, 4]
- 将 3, 4 号的关联六边形加入 check 数组 -> [1, 4, 5, 7, 1, 2, 3, 6, 7, 8]
- check 数组去重 -> [1, 2, 3, 4, 5, 6, 7, 8]
- 去除 check 数组与 checked 数组交集元素 -> [5, 6, 7, 8]
- 遍历 check 数组,提取蓝色正六边形 -> 6 ……
可以发现,checked 数组的元素从 1 号开始,是一层层随着颜色往外遍历的。
编写成递归代码:
1 | |
Swift 求正六边形网格中颜色相同且相邻的正六边形数量(递归)
https://wonderhoi.com/2024/12/12/Swift-求正六边形网格中颜色相同且相邻的正六边形数量/