如何解决BeeCrowd(原URI)1015题:两点间距离计算问题
BeeCrowd 1015题(两点间距离)问题排查
我在做BeeCrowd(原URI)的1015题《两点间距离》,题目要求如下:
- 读取平面内两点p₁(x₁,y₁)和p₂(x₂,y₂)的四个坐标值
- 根据公式
Distance = √[(x₂−x₁)² + (y₂−y₁)²]计算两点间距离 - 输入为两行数据,每行包含两个double类型值;输出需保留四位小数
我编写的JavaScript代码本地测试时输出看似正确,但提交后显示85%的测试用例失败,代码如下:
let x1 = 1.0; let y1 = 7.0; let x2 = 5.0; let y2 = 9.0; function Distance(a, b, c, d) { let z = Math.sqrt(Math.pow(a - b, 2) + Math.pow(c - d, 2)); console.log(z.toFixed(4)); } Distance(x2, x1, y2, y1);
问题根源
核心问题是代码硬编码了测试数据,没有按照题目要求读取输入内容。BeeCrowd的测试用例会传入多组不同的坐标数据,硬编码的固定值只能适配你本地测试的那一组数据,其他测试用例自然无法通过。
修正后的代码
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let coordinates = []; rl.on('line', (line) => { // 分割每行输入并转换为浮点数 coordinates.push(...line.trim().split(' ').map(parseFloat)); // 收集到4个坐标值后计算距离 if (coordinates.length === 4) { const [x1, y1, x2, y2] = coordinates; const distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); console.log(distance.toFixed(4)); rl.close(); } });
修正说明
- 使用Node.js的
readline模块读取标准输入,适配BeeCrowd的输入格式 - 逐行解析输入内容,将字符串转换为浮点数坐标
- 收集齐4个坐标值后,严格按照题目公式计算距离
- 用
toFixed(4)保证输出结果保留四位小数,符合题目要求
内容的提问来源于stack exchange,提问作者Shanto Islam Dhrubo
相关产品推荐
相关产品推荐

