如何用JavaScript高效实现URI 1015「两点间距离」问题的求解方法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计732个文字,预计阅读时间需要3分钟。
原文:
URI 1015 是一道经典的计算几何入门题,核心是实现二维平面上两点间的欧氏距离公式:
[
\text{Distance} = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}
]
但关键不在于公式本身,而在于严格遵循输入/输出规范与编写可被在线评测系统(OJ)正确执行的代码。
✅ 正确实现要点
禁止硬编码输入
初学者常直接赋值 x1 = 1.0; y1 = 7.0; ... —— 这会导致 85% 以上测试用例失败。OJ 会通过标准输入(stdin)动态提供多组测试数据,程序必须主动读取。-
正确读取并解析输入
在 Node.js 环境中(URI 使用此环境),需使用 fs.readFileSync('/dev/stdin', 'utf8') 读取全部输入内容,再按空格或换行分割、转换为数字:const input = require('fs').readFileSync('/dev/stdin', 'utf8'); const [x1, y1, x2, y2] = input.trim().split(/\s+/).map(Number);
-
函数设计应职责单一
原代码将 console.log 写入函数内部,违反“计算与 I/O 分离”原则。
本文共计732个文字,预计阅读时间需要3分钟。
原文:
URI 1015 是一道经典的计算几何入门题,核心是实现二维平面上两点间的欧氏距离公式:
[
\text{Distance} = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}
]
但关键不在于公式本身,而在于严格遵循输入/输出规范与编写可被在线评测系统(OJ)正确执行的代码。
✅ 正确实现要点
禁止硬编码输入
初学者常直接赋值 x1 = 1.0; y1 = 7.0; ... —— 这会导致 85% 以上测试用例失败。OJ 会通过标准输入(stdin)动态提供多组测试数据,程序必须主动读取。-
正确读取并解析输入
在 Node.js 环境中(URI 使用此环境),需使用 fs.readFileSync('/dev/stdin', 'utf8') 读取全部输入内容,再按空格或换行分割、转换为数字:const input = require('fs').readFileSync('/dev/stdin', 'utf8'); const [x1, y1, x2, y2] = input.trim().split(/\s+/).map(Number);
-
函数设计应职责单一
原代码将 console.log 写入函数内部,违反“计算与 I/O 分离”原则。

