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

Function to find area of a rectangle with given cartesian coordinates

让函数 RectangleArea(strArr) 获取存储在 strArr 中的字符串数组,它只包含 4 个元素并且采用 (x y) 形式,其中 x 和 y 都是整数,return由笛卡尔网格上的 4 个点形成的矩形区域。这 4 个元素将按任意顺序排列。例如:如果 strArr 是 ["(0 0)", "(3 0)", "(0 2)", "(3 2)"] 那么你的程序应该 return 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);
}
//c++ code
#include <bits/stdc++.h>
using namespace std;
int product(vector<string>arr){
int fistvalue= arr[0][1]-'0';
int secondvalue=arr[0][3]-'0';
int height=0;
int width=0;
for(int i=1;i<arr.size();i++){
    if(arr[i][1]-'0'==fistvalue){
        height=secondvalue-(arr[i][3]-'0');
    }
    if(arr[i][3]-'0'==secondvalue){
        width=fistvalue-(arr[i][1]-'0');
    }
}
return abs((height*width));
}
int main(){
cout<<product({"(0 0)", "(3 0)", "(0 2)", "(3 2)"});
return 0;}