[英]Find all occurrences of one 2D array inside another 2D array
在JavaScript中,我試圖找到這個2D整數數組的所有匹配坐標:
在這個2D整數數組中,計算重疊的子數組:
每個圖像代表一個2D JavaScript整數數組,黑色像素對應於1
,黃色像素對應0
,但我用這種方式描述了數組,以便更容易可視化。
那么如何才能找到數組的所有匹配項 在數組內部
?
這是我正在嘗試實現的功能:
findAllMatchesOfOne2DArrayInsideAnother2DArray(containedArray, containingArray){
//find all matching coordinates of containedArray inside containingArray, and return a 2D array of coordinates
}
這是一種在另一個2D數組中獲取任何給定2D數組的所有出現的方法 。 假設所有子陣列具有相同的維度(不像[[1,0,0],[1,0]]
)。
var x = [[0,1,0,0,0,0,0],
[1,1,1,0,0,1,0],
[0,1,0,0,1,1,1],
[0,0,0,0,0,1,0],
[0,0,1,0,0,0,0],
[0,1,1,1,0,0,0],
[0,0,1,0,0,0,0]];
var y = [[0,1,0],[1,1,1],[0,1,0]];
var res = [];
for (var i = 0; i < x.length - y.length + 1; i++) {
for (var k = 0; k < x[0].length - y[0].length + 1; k++) {
var count = 0;
for (var l = 0; l < y.length; l++) {
for (var m = 0; m < y[l].length; m++) {
count += Math.abs(y[l][m] - x[i + l][k + m]);
}
}
if (count === 0) {
res.push([i, k]);
}
}
}
數組res
將包含每個匹配的左上角的“坐標”。 我相信你會找到性能更好的算法,但這個算法似乎有效:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.