微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用给定的笛卡尔坐标查找矩形面积的函数

如何解决用给定的笛卡尔坐标查找矩形面积的函数

函数 RectangleArea(strArr) 获取存储在 strArr 中的字符串数组,该数组只包含 4 个元素,形式为 (xy),其中 x 和 y 均为整数,并返回由笛卡尔网格上的 4 个点。这 4 个元素将按任意顺序排列。例如:如果 strArr 是 ["(0 0)","(3 0)","(0 2)","(3 2)"] 那么你的程序应该返回 6 因为矩形的宽度是 3 并且高度为2,矩形的面积等于宽*高。

例如 -

Input: ["(1 1)","(1 3)","(3 1)","(3 3)"]
Output: 4
Input: ["(0 0)","(1 0)","(1 1)","(0 1)"]
Output: 1

解决方法

如果您输入正确的矩形坐标集,下面的函数将起作用

function distance(coord1,coord2) {
  console.log(coord1,coord2);
  return Math.sqrt(Math.pow(coord1[0] - coord2[0],2) + Math.pow(coord1[1] - coord2[1],2));
}

function RectangleArea (strArr) {
  if (strArr.length < 4) {
    throw new Error("invalid array passed");
  }
  const numArr = strArr.map(coord => coord.match(/\d/g));

  const width = distance(numArr[0],numArr[1]);
  const height = distance(numArr[1],numArr[2]);
  console.log(width,height);

  return width * height;
}
,

Java 解决方案:

 public int product(String[] strArr){ 
    int firstValue = Integer.parseInt(String.valueOf(strArr[0].charAt(1)));
    int secondValue = Integer.parseInt(String.valueOf(strArr[0].charAt(3)));
    int height = 0;
    int width= 0;

    for(int i=1; i<strArr.length;i++){
        if(Integer.parseInt(String.valueOf(strArr[i].charAt(1)))==firstValue){
            height = secondValue - Integer.parseInt(String.valueOf(strArr[i].charAt(3)));
        }
        if(Integer.parseInt(String.valueOf(strArr[i].charAt(3)))==secondValue){
            width = firstValue - Integer.parseInt(String.valueOf(strArr[i].charAt(1)));
        }
    }

    return Math.abs(height*width);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。