【问题标题】:Storing and comparing grid patterns存储和比较网格模式
【发布时间】:2016-08-29 03:52:20
【问题描述】:

我有一个存储模式信息的二维数组。数据可能如下所示:

var testGrid = [["blank", "red", "blank"],
/* row 2 */ ["blank", "yellow", "green"],
/* row 3 */ ["blank", "blue", "blank"]];

图案的最大尺寸是 3 x 3 的网格,但是,并非所有空间都必须使用。由于空白基本上意味着那里没有信息,所以我经常遇到两种模式结构不同但功能相同的情况。像这样:

[["red", "red" "blank"],
["red", "red", "blank"], 
["blank", "blank", "blank"]

[["blank", "blank", "blank"],
["blank", "red", "red"],
["blank", "red", "red"]]

由于方向,所有模式都有 4 种可能的表示形式。但是,有些模式如下所示:

[["blank", "blank", "blank"],
["blank", "yellow", "green"],
["blank", "blue", "blank"]]

在 3 x 3 的网格中有 8 种可能的表示形式。

所以我有几个问题:

  1. 存储这些数据的最佳方式是什么?我在想我可以将更简单的模式存储为 2 x 2 网格,这样可以将我必须对这些模式进行的检查数量减少到正常的 4。

  2. 检查数据库中已有模式的最佳方法是什么?只是循环一个函数,将新创建的模式与数据库中的每个其他条目进行比较? (顺便说一下,我使用的是 mongoDB)。

【问题讨论】:

  • 有多少种颜色?你是指哪 8 种表示?绕中心旋转,好的,那是 4,然后呢?镜像?翻译了吗?
  • 对不起,我的意思是翻译

标签: javascript mongodb design-patterns multidimensional-array


【解决方案1】:

一种选择是使用数字(十六进制/十进制)来编码颜色并存储。所以如果blank = 0, red = 1, green = 2, yellow = 3

然后

["blank", "yellow", "green"] = "032"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多