Maison >interface Web >js tutoriel >Codewars - Vous êtes un carré !
Salutations.
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.
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.
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(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.
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 :
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.
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!