网格中的集群项目

问题描述 投票:0回答:1

背景:拼图方格大小可以是16x16、8x8或4x4,难度随着颜色数量的相似度而变化。七种颜色的数量各不相同,游戏的目标是在拼图格内找到最多/最少的颜色

我希望颜色尽可能聚集在一起,而不是分散在整个拼图网格中,并且每个坐标只能由一种颜色占据。最终生成的结果预计会完全填满并形成七块拼图,每种颜色都有自己的一面,就像七巧板

如何在益智游戏中创建聚类颜色算法? 谢谢你的帮助!

代码沙盒: https://codesandbox.io/s/clustering-3ptu3s

示例:(4x4)

{ row: 0, column: 0, color: 0}
{ row: 0, column: 1, color: 1}
{ row: 0, column: 2, color: 2}
{ row: 0, column: 3, color: 3}

{ row: 1, column: 0, color: 3}
{ row: 1, column: 1, color: 4}
{ row: 1, column: 2, color: 0}
{ row: 1, column: 3, color: 1}

{ row: 2, column: 0, color: 2}
{ row: 2, column: 1, color: 3}
{ row: 2, column: 2, color: 2}
{ row: 2, column: 3, color: 1}

{ row: 3, column: 0, color: 1}
{ row: 3, column: 1, color: 1}
{ row: 3, column: 2, color: 1}
{ row: 3, column: 3, color: 3}

期望的输出:

{ row: 0, column: 0, color: 0}
{ row: 0, column: 1, color: 0}
{ row: 0, column: 2, color: 2}
{ row: 0, column: 3, color: 2}

{ row: 1, column: 0, color: 3}
{ row: 1, column: 1, color: 4}
{ row: 1, column: 2, color: 2}
{ row: 1, column: 3, color: 1}

{ row: 2, column: 0, color: 3}
{ row: 2, column: 1, color: 3}
{ row: 2, column: 2, color: 3}
{ row: 2, column: 3, color: 1}

{ row: 3, column: 0, color: 1}
{ row: 3, column: 1, color: 1}
{ row: 3, column: 2, color: 1}
{ row: 3, column: 3, color: 1}

typescript algorithm math lodash
1个回答
0
投票

你可以这样走:

将您的彩色框视为单行(按颜色排序)。然后将这一行放在框中(从左到右奇数行,从右到左偶数行)

例子

0 0 1 1 1 1 1 1 2 2 2 3 3 3 3 4

becomes:

0 0 1 1   ->
1 1 1 1   <-
2 2 2 3   ->
4 3 3 3   <-

也许不是最好的“集群”方式,但至少所有相同颜色的盒子都是相连的。

© www.soinside.com 2019 - 2024. All rights reserved.