<script>
function
findMissing(mat)
{
let N = mat.length;
let mp =
new
Map();
let t = Math.abs(mat[(Math.floor(N / 2))][(Math.floor(N / 2) + 1)]
- mat[(Math.floor(N / 2))][(Math.floor(N / 2) - 1)]);
let A
= Math.min(mat[(Math.floor(N / 2))][(Math.floor(N / 2) + 1)],
mat[(Math.floor(N / 2))][(Math.floor(N / 2) - 1)]);
if
(t % 2 == 0) {
if
(mp.has(A + Math.floor(t / 2)))
mp.set(A + Math.floor(t / 2), mp.get(A + Math.floor(t / 2)) + 1);
else
mp.set(A + Math.floor(t / 2), 1);
}
t = Math.abs(mat[(Math.floor(N / 2) + 1)][(Math.floor(N / 2))]
- mat[(Math.floor(N / 2))][(Math.floor(N / 2))]);
A = Math.min(mat[(Math.floor(N / 2) + 1)][(Math.floor(N / 2))],
mat[(Math.floor(N / 2))][(Math.floor(N / 2))]);
if
(t % 2 == 0) {
if
(mp.has(A + Math.floor(t / 2)))
mp.set(A + Math.floor(t / 2), mp.get(A + Math.floor(t / 2)) + 1);
else
mp.set(A + Math.floor(t / 2), 1);
}
t = Math.abs(mat[(Math.floor(N / 2) + 1)][(Math.floor(N / 2) + 1)]
- mat[(Math.floor(N / 2) - 1)][(Math.floor(N / 2) - 1)]);
A = Math.min(mat[(Math.floor(N / 2) + 1)][(Math.floor(N / 2) + 1)],
mat[(Math.floor(N / 2) - 1)][(Math.floor(N / 2) - 1)]);
if
(t % 2 == 0) {
if
(mp.has(A + Math.floor(t / 2)))
mp.set(A + Math.floor(t / 2), mp.get(A + Math.floor(t / 2)) + 1);
else
mp.set(A + Math.floor(t / 2), 1);
}
t = Math.abs(mat[(Math.floor(N / 2) - 1)][(Math.floor(N / 2) + 1)]
- mat[(Math.floor(N / 2) + 1)][(Math.floor(N / 2) - 1)]);
A = Math.min(mat[(Math.floor(N / 2) - 1)][(Math.floor(N / 2) + 1)],
mat[(Math.floor(N / 2) + 1)][(Math.floor(N / 2) - 1)]);
if
(t % 2 == 0) {
if
(mp.has(A + Math.floor(t / 2)))
mp.set(A + Math.floor(t / 2), mp.get(A + Math.floor(t / 2)) + 1);
else
mp.set(A + Math.floor(t / 2), 1);
}
let ans = -1, occur = 0;
for
(let [key, val] of mp) {
if
(occur < val) {
ans = key;
}
if
(occur == val) {
ans = Math.max(ans, key);
}
}
return
ans;
}
let mat = [[3, 4, 11],
[10, Number.MAX_VALUE, 9],
[-1, 6, 7]];
document.write(findMissing(mat))
</script>