ホームページ > ウェブフロントエンド > jsチュートリアル > Codewars - あなたは正方形です!

Codewars - あなたは正方形です!

Linda Hamilton
リリース: 2025-01-03 03:05:39
オリジナル
676 人が閲覧しました

ご挨拶

Codewars - You

このシリーズでは、Codewars の課題と私の思考プロセスを投稿しています。私は可能な限り JS と Node 18 を使用しています。明確にするために、私はそれらを公正に使用しています。

このシリーズの次の作品は「You're a Square!」です。ほら、あなたのレゴ中毒が少し手に負えなくなり、今は代替薬としてコーディングをしているのです。

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(n2)2 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;
}
ログイン後にコピー
アンンンンンンンンンド:


Codewars - You

ああ、さあ。なぜ失敗するのでしょうか?おお。 JavaScript は浮動小数点数を使って奇妙なことを行います。したがって、コードのせいではありません。右?私たちには決して分からないと思います。それでも私はJSが大好きです。この風変わりな野郎。

  1. ステップ 3: 正しく素早く行う
Math.sqrt():

を使用してください。

var isSquare = function(n){
  let nIsSquare = false;
  if (n>=0) {
     nIsSquare = Number.isInteger(Math.sqrt(n));
  }
  return nIsSquare;
}
ログイン後にコピー
最善ではありませんが、最も簡単な解決策です。仕事はしてくれます。

さようなら。水を飲みましょう???

以上がCodewars - あなたは正方形です!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート