You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:47:46