首页 > web前端 > js教程 > Codewars - 你是一个方块!

Codewars - 你是一个方块!

Linda Hamilton
发布: 2025-01-03 03:05:39
原创
702 人浏览过

问候。

Codewars - You

我在本系列中发布了 Codewars 挑战和我的思考过程。我尽可能使用 JS 和 Node 18。只是为了清楚起见,我正在合理使用它们。

本系列的下一篇是“你是一个正方形!”。看,你的乐高瘾有点失控了,你现在正在编码作为替代药物。

Codewars - You

嗯,你还好吗?你的下一个任务涉及正方形。所以问题寻求回答“这个数字是平方吗?”。那么,我们该如何解决这个问题呢?然而我们渴望。与任何编码问题一样。

首先,解决它。然后,正确解决。然后,正确快速地解决它。

  1. 第 1 步:犯错误

我的第一直觉引导我这样做:

var isSquare = function(n){
  let nIsSquare = false;
  if (n>=0) {
      nIsSquare = ( n ** 2 ) == 2 * ( (n - 1) ** 2 ) - ( (n-2) ** 2 ) + 2;
  }
  return nIsSquare;
}
登录后复制

这是错误的。我和一起去了 n2 =2(n1 )2(n22 2n^2 = 2(n − 1)^2 − (n − 2)^2 2n2 =2(n−1) 2(n−2)2 2
感谢维基百科。但这是验证n^2的公式。我需要一个公式来验证 n.

  1. 第 2 步:正确执行犯更多错误

在另一篇维基百科文章中,有一种简洁、简洁的方法来计算平方根:指数恒等式。

所以我们修复了之前的代码:

var isSquare = function(n){

  let nIsSquare = false;
  if (n>=0) {
     let sqrt = Math.E ** ( Math.log(n) / 2 );
     nIsSquare = Number.isInteger(sqrt);
  }

  return nIsSquare;
}
登录后复制

Annnnnnnnnnnnnd:
Codewars - You

哦,来吧。为什么会失败?哦。 JavaScript 对浮点数做了一些奇怪的事情。所以,这不是代码的错。正确的?猜猜我们永远不会知道。即便如此,我还是爱你,JS。你这个古怪的混蛋。

  1. 第三步:正确快速地做

只需使用 Math.sqrt():

var isSquare = function(n){
  let nIsSquare = false;
  if (n>=0) {
     nIsSquare = Number.isInteger(Math.sqrt(n));
  }
  return nIsSquare;
}
登录后复制

不是最好的,而是最简单的解决方案。做这份工作。

再见。喝水???.

上一页

以上是Codewars - 你是一个方块!的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板