안녕하세요.
이번 시리즈에서는 Codewars의 도전 과제와 저의 사고 과정을 포스팅하고 있습니다. 가능할 때마다 JS와 Node 18을 사용하고 있습니다. 명확성을 위해 공정하게 사용하고 있습니다.
이 시리즈의 다음 작품은 "You're a Square!"입니다. 보세요, 당신의 LEGO 중독은 약간 통제 불능 상태가 되어 이제 대체 약물로 코딩을 하고 있습니다.
아, 괜찮아요?. 그리고 다음 작업에는 사각형이 포함됩니다. 그래서 문제는 "이 숫자는 정사각형인가?"라는 답을 구하는 것입니다. 그렇다면 이 문제를 어떻게 해결해야 할까요? 그러나 우리는 원합니다. 여느 코딩 문제와 마찬가지로
먼저 해결해보세요. 그럼 제대로 해결해보세요. 그럼 정확하고 빠르게 풀어보세요.
첫 번째 직감은 다음과 같습니다.
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(n−1) 2−(n−2)2 2
감사합니다 위키피디아. 하지만 이는 n^2을 검증하기 위한 공식입니다. n을 확인하려면 공식이 필요합니다.
또 다른 위키피디아 기사에는 제곱근을 계산하는 깔끔하고 간단한 방법인 지수 항등식이 있었습니다.
이전 코드를 수정합니다.
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:
아, 어서요. 왜 실패합니까? 오. JavaScript는 부동 소수점 숫자를 사용하여 이상한 작업을 수행합니다. 따라서 코드의 잘못은 아닙니다. 오른쪽? 우리는 절대 알 수 없을 것 같아요. 그래도 사랑해요 JS. 이 변태새끼야.
Math.sqrt()를 사용하세요.
var isSquare = function(n){ let nIsSquare = false; if (n>=0) { nIsSquare = Number.isInteger(Math.sqrt(n)); } return nIsSquare; }
최고는 아니지만 가장 간단한 솔루션입니다. 일을 합니다.
안녕하세요. 물을 마셔요???.
이전
위 내용은 Codewars - 당신은 정사각형입니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!