存储和比较网格模式

时间:2016-08-29 03:52:20

标签: javascript mongodb design-patterns multidimensional-array

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

enter image description here

function add (num) {
    function adder (n) {
        num += n;
        return adder;
    }
    adder.valueOf = function(){
        return num
    };
    adder.toString = function(){
        return '' + num
    };
    return adder;
}

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

var sum = add(1)(2)(3)(4) + 5; // results in 15
var txt = add(1)(2)(3)(4) + "hello"; // results in "10hello"

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

enter image description here

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

在3乘3网格中有8个可能的表示。

所以我有几个问题:

  1. 存储此数据的最佳方法是什么?我以为我可以将更简单的模式存储为2乘2网格,这样可以减少我对普通模式的检查量。

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

1 个答案:

答案 0 :(得分:0)

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

然后

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