Anreden.
Ich poste in dieser Serie Codewars-Herausforderungen und meinen Denkprozess. Ich verwende wann immer möglich JS und Node 18. Nur der Klarheit halber nutze ich sie fair.
Der nächste Teil dieser Serie ist „You're a Square!“. Sehen Sie, Ihre LEGO-Sucht ist ein wenig außer Kontrolle geraten und Sie programmieren jetzt als Ersatzdroge.
Nein, dir geht es gut? Und Ihre nächste Aufgabe besteht aus Quadraten. Die Aufgabe lautet also: „Ist diese Zahl ein Quadrat?“. Wie gehen wir also damit um? Wie auch immer wir es wünschen. Wie bei jedem Codierungsproblem.
Lösen Sie es zuerst. Dann lösen Sie es richtig. Dann lösen Sie es richtig und schnell.
Meine erste Ahnung führte mich zu folgendem:
var isSquare = function(n){ let nIsSquare = false; if (n>=0) { nIsSquare = ( n ** 2 ) == 2 * ( (n - 1) ** 2 ) - ( (n-2) ** 2 ) + 2; } return nIsSquare; }
Das ist falsch. Ich habe mich für entschieden
n2 =2(n−1) 2−(n−2)2 2
Danke Wikipedia. Dies ist jedoch eine Formel zur Überprüfung von n^2. Ich brauche eine Formel, um n zu überprüfen.
In einem anderen Wikipedia-Artikel gab es eine nette, kurze Möglichkeit, Quadratwurzeln zu berechnen: Exponentielle Identität.
Also korrigieren wir unseren vorherigen Code:
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, komm schon. Warum scheitert es? Oh. JavaScript macht seltsame Dinge mit Gleitkommazahlen. Es ist also nicht die Schuld des Codes. Rechts? Ich schätze, wir werden es nie erfahren. Trotzdem liebe ich dich, JS. Du schrulliger Bastard.
Verwenden Sie einfach Math.sqrt():
var isSquare = function(n){ let nIsSquare = false; if (n>=0) { nIsSquare = Number.isInteger(Math.sqrt(n)); } return nIsSquare; }
Nicht die beste, aber die einfachste Lösung. Macht den Job.
Tschüss. Wasser trinken???.
Zurück
Das obige ist der detaillierte Inhalt vonCodewars – Du bist ein Quadrat!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!