求坐标

作者: _____西班木有蛀牙 | 来源:发表于2021-01-18 23:52 被阅读0次
题目
/**
 * 输入n, 第35秒 n=35
 * 输出坐标位置 (5,0)
 */
const getCoordinates = (n = 0) => {
  if (n === 0) return "(0, 0)";
  if (n === 1) return "(0, 1)";
  if (n === 2) return "(1, 1)";
  if (n === 3) return "(1, 0)";
  let x = 0;
  let y = 0;
  const rooting_floor = Math.floor(Math.sqrt(n)); // 开平方 向下取整
  const rooting = rooting_floor % 2 === 1 ? rooting_floor - 1 : rooting_floor;
  const remainder = n - Math.pow(rooting, 2); // 平方之后多出的数
  if (remainder >= 0 && remainder <= rooting) {
    x = rooting;
    y = remainder;
  } else if (remainder > rooting && remainder <= 2 * rooting) {
    x = rooting - (remainder - rooting);
    y = rooting;
  } else if (remainder === 2 * rooting + 1) {
    x = rooting;
    y = rooting + 1;
  } else if (remainder > (2 * rooting + 1) && remainder <= (3 * rooting + 2)) {
    x = (rooting + 1) - (remainder - (2 * rooting + 1))
    y = rooting + 1;
  } else {
    x = rooting + 1;
    y = (rooting + 1) - (remainder - (3 * rooting + 2));
  }
  return `(${x}, ${y})`
}

相关文章

网友评论

      本文标题:求坐标

      本文链接:https://www.haomeiwen.com/subject/spbfzktx.html