105个字节:
f=(m,n)=>m.some((x,i)=>i<=m.length-n.length&x.some((c,j)=>n.every((l,z)=>(m[i+z]+'').indexOf(l,j)==2*j)))
在线尝试!
变化:
m[i]成x和n[z]成l:完全忘记了这些变量已实例化
&&into &:运算符的两边已经是布尔值,因此按位运算符将起作用
112个字节:
f=(m,n)=>m.some((x,i)=>i<=m.length-n.length&&m[i].some((c,j)=>n.every((l,z)=>(m[i+z]+'').indexOf(n[z],j)==2*j)))
在线尝试!
变化:
map((c,j)=>{...}).some(s=>s)成some((c,j)=>{...}):冗余
m[i+z].join()into m[i+z]+'':将数组转换为字符串的较短方法
indexOf(n[z].join(),j)into indexOf(n[z],j):该 indexOf 方法已经转换 n[z] 为字符串
131个字节:
f=(m,n)=>m.some((x,i)=>i<=m.length-n.length&&m[i].map((c,j)=>n.every((l,z)=>m[i+z].join().indexOf(n[z].join(),j)==2*j)).some(s=>s))
在线尝试!
可读性:
function f (m, n) {
return m.some((x, i) => {
return i <= m.length - n.length
&& m[i].map((c, j) => {
return n.every((l, z) => {
return m[i + z].join().indexOf(n[z].join(), j) == 2 * j
})
})
.some(s => s)
})
}
我检查了网格N的行是否包含在网格M的行中,而不是对各个值进行取舍,如果是,则检查在哪个索引处。如果从同一索引开始包含所有行,则网格N将包含在网格M中。