เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์กิวเมนต์ 4 ตัว ทั้ง 4 เป็นอาร์เรย์ของตัวเลขสองตัว แทนพิกัดมุมสี่มุมของสี่เหลี่ยมหรือรูปทรงใดๆ บนระนาบ
ภารกิจคือกำหนดว่ามุมสี่มุมนี้สร้างเป็นสี่เหลี่ยมจัตุรัสหรือไม่ ถ้าเป็นคืน true มิฉะนั้น false
ตัวอย่าง
ถ้าพิกัดนำเข้าคือ:
const c1 = [1, 0]; const c2 = [-1, 0]; const c3 = [0, 1]; const c4 = [0, -1];
ผลลัพธ์ควรเป็น:
const output = true;
เพราะพิกัดเหล่านี้สร้างสี่เหลี่ยมจัตุรัสพื้นที่ 4 หน่วยกำลังสอง
ตัวอย่างโค้ด
const c1 = [1, 0];
const c2 = [-1, 0];
const c3 = [0, 1];
const c4 = [0, -1];
const validSquare = (c1, c2, c3, c4) => {
const dist = (c1, c2) => (Math.sqrt(Math.pow(c1[0] - c2[0], 2) + Math.pow(c1[1] - c2[1], 2)));
const points = [c1, c2, c3, c4];
let lens = new Set();
for(let i = 0; i < points.length; i++) {
for(let j = i + 1; j < points.length; j++) {
if(points[i][0] == points[j][0] && points[i][1] == points[j][1]) {
return false;
}
let dis = dist(points[i], points[j]);
lens.add(dis);
}
}
return lens.size === 2;
};
console.log(validSquare(c1, c2, c3, c4));
ผลลัพธ์
true