Maison >interface Web >js tutoriel >Codewars - Vous êtes un carré !

Codewars - Vous êtes un carré !

Linda Hamilton
Linda Hamiltonoriginal
2025-01-03 03:05:39681parcourir

Salutations.

Codewars - You

Je publie les défis Codewars et mon processus de réflexion dans cette série. J'utilise JS et Node 18 autant que possible. Par souci de clarté, j'en fais un usage équitable.

Le prochain de cette série est "You're a Square !". Vous voyez, votre dépendance aux LEGO est devenue un peu incontrôlable et vous codez maintenant comme drogue de remplacement.

Codewars - You

Non, tu vas bien ?. Et votre prochaine tâche implique des carrés. Le problème cherche donc à répondre « Ce nombre est-il un carré ? ». Alors, comment pouvons-nous aborder cela ? Cependant nous le désirons. Comme pour tout problème de codage.

Tout d’abord, résolvez-le. Ensuite, résolvez-le correctement. Ensuite, résolvez-le correctement et rapidement.

  1. Étape 1 : Faire des erreurs

Ma première intuition m'a conduit à ceci :

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

C'est faux. J'y suis allé avec n2 =2(n1 )2(n2)2 2n^2 = 2(n − 1)^2 − (n − 2)^2 2n2 =2(n−1) 2(n−2)2 2
Merci Wikipédia. Mais c'est une formule pour vérifier n^2. J'ai besoin d'une formule pour vérifier n.

  1. Étape 2 : Faites-le correctementFAITES PLUS D'ERREURS

Dans un autre article de Wikipédia, il existait une méthode simple et rapide pour calculer les racines carrées : l'identité exponentielle.

Nous corrigeons donc notre code précédent :

var isSquare = function(n){

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

  return nIsSquare;
}

Annnnnnnnnnnnd :
Codewars - You

Oh, allez. Pourquoi ça échoue ? Oh. JavaScript fait des choses étranges avec les nombres à virgule flottante. Ce n'est donc pas la faute du code. Droite? Je suppose que nous ne le saurons jamais. Malgré tout, je t'aime JS. Espèce de salaud excentrique.

  1. Étape 3 : Faites-le correctement et rapidement

Utilisez simplement Math.sqrt() :

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

Pas la meilleure, mais la solution la plus simple. Fait le travail.

Au revoir. Boire de l'eau ???.

Précédent

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn