如何解决用给定的笛卡尔坐标查找矩形面积的函数
让函数 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 举报,一经查实,本站将立刻删除。