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

Codewars - Vous êtes un carré !

Linda Hamilton
Libérer: 2025-01-03 03:05:39
original
702 Les gens l'ont consulté

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal