【发布时间】:2017-11-13 18:44:59
【问题描述】:
我有一个数组(二维矩阵),我想获取
的 x/y 值- 最左侧和顶部连接的“1”字符
- 最右边和最底部连接的'1'-字符
编辑 2.0:
我用参数 x/y 调用我的函数,这是我的起始-'1'-字符的坐标。
10001
00001
11111
01110 --> (x: 1, y: 3)
我的函数会检查 & 上方的列和右侧的列,因此如果有一个字符“1”,它会计算 x 或 y(无论在哪里找到该列)加 1。
我的函数从特定点开始(例如 y: 2, x: 0)
var array = [
'00000',
'01111', --> get position of the most top & right '1'-character (x: 4, y: 1)
'11000',
'00000'
]
这是获取“1”字符右上角的函数:
var array = [
'00000',
'01111',
'11000',
'00000'
]
Array.prototype.get_top_right = function(x_pos, y_pos) {
var matrix = this, y1= y_pos;
for (var x1 = x_pos; x1 < this[0].length; x1++) {
try {
if (matrix[(y1-1)][x1] == '1') y1--;
else if (matrix[y1][(x1+1)] != '1') break;
} catch(e) {}
}; return [x1,y1]
}
var result=array.get_top_right(0,2)
console.log(result)
好的。上面的函数似乎工作正常,但现在我想扭转这个过程,以获得我的数组/二维矩阵的最后一个左下角连接的“1”字符。
var array = [
'00000',
'01111',
'11000', --> get position of the most bottom & left '1'-character (x: 0, y: 2)
'00000'
]
我不知道如何编辑上面的函数以获取左侧和底部匹配作为结果,而不是像您在上面看到的最右侧和顶部匹配。
编辑 1.0 我之前编写的函数无法正常工作,但看起来像这样:
Array.prototype.get_bottom_left = function(x_pos, y_pos) {
var matrix = this, y2= y_pos;
for (var x2 = x_pos; x2 > 0; x2--) {
try {
if (matrix[(y2+1)][x2] == '1') y2++;
if (matrix[y2][(x2-1)] != '1') break;
} catch(e) {}
}; return [x2,y2]
}
使用上面的这个函数和下面的error_array来获取数组的左下角连接字符会导致浏览器崩溃。不错!
var error_array = [
'000000',
'000011',
'111110',
'111111'
]
但是,我希望有人可以帮助我更新我的功能...
提前一百万,
问候 - hans。
【问题讨论】:
-
我可以发誓我昨天看到了同样的问题,但现在找不到了,想象一下。
-
好的。听起来很疯狂,所以如果你发现了这个问题,如果你能把这个问题的链接提供给我,那就太好了。谢谢!
-
字符串总是5个字符吗?
-
如果您指的是数组中几个字符串的长度,是的,长度与所有字符串相同。假设是 5。
-
我会推荐一个布尔数组,而不是字符串数组。
标签: javascript arrays algorithm