javascript - 如何获得矩阵中两个数字之间的对角线数字?
问题描述
如何检查方阵的两个索引是否彼此对角线。考虑数组。
[
0 , 1 , 2 , 3 ,
4 , 5 , 6 , 7 ,
8 , 9 , 10, 11,
12, 13, 14, 15
]
创建一个接受三个参数数组和两个索引的函数。true
如果两个索引彼此对角线,则应返回 a ,否则返回false
For 上述数组。
0,15 => true
3,12 => true
11,6 => true
9,6 => true
4,15 => false
8,12 => false
1,10 => false //my code fails for this.
我试图创建一个函数,但它根本不起作用。
function check(arr,a,b){
let len = Math.sqrt(arr.length);
let dif = Math.abs(a-b);
return dif % (len+1) === 0 || dif % (len - 1) === 0
}
有人可以给出一个简单的解决方案。
解决方案
只需获取 col 和 row,并检查 delta 是否相同。
(实际上不需要取数组,所以我只取它的维度)
function check(dim,a,b){
let [x1,y1]=[Math.floor(a/dim),a%dim]
let [x2,y2]=[Math.floor(b/dim),b%dim]
return Math.abs(x1-x2)==Math.abs(y1-y2)
}
console.log(check(4,0,15))
console.log(check(4,3,12))
console.log(check(4,11,6))
console.log(check(4,9,6))
console.log(check(4,4,15))
console.log(check(4,8,12))
console.log(check(4,6,12))
推荐阅读
- rdlc - RDLC - 根据行值对项目进行排序
- javascript - async 是否使其中的所有内容都异步?
- c# - 从 IEnumerator 检索原始类型
- python - 如何保存 Keras 回归模型?
- java - 在 Java 中连接重置后恢复流式传输 GZIP 文件
- bash - 如何递归应用命令
- svg - 在 Highcharts 中,如何在调整大小、重排、重绘、缩小时保持矩形这样的 SVG 元素与系列数据而不是像素相连?
- java - Java SQL 插入具有自动递增 id 的行
- python - 标签在框中重叠而不是在滚动视图中包装
- ruby-on-rails - 红宝石、阿贾克斯和主干