>웹 프론트엔드 >JS 튜토리얼 >Codewars - 큐브 더미를 쌓으세요

Codewars - 큐브 더미를 쌓으세요

Patricia Arquette
Patricia Arquette원래의
2025-01-07 08:32:39575검색

안녕하세요.

Codewars - Build a pile of Cubes

이번 시리즈에서는 Codewars의 도전 과제와 저의 사고 과정을 포스팅하고 있습니다. 가능할 때마다 JS와 Node 18을 사용하고 있습니다. 명확성을 위해 공정하게 사용하고 있습니다.

다음은 수학에 어려움을 겪는 우리에게 까다로운 문제입니다. 그래도 좋은 도전이네요. 본질적으로 이는 "n" 큐브의 합을 알아내는 것으로 요약됩니다. 그리고 흑마법(일명: 대수학) 짜잔이 있습니다! 해결되었습니다.

증명으로 설명한 큐브의 합

전체 솔루션:

function findNb(m) {

  // sum of n cubes = ( n^2 * (n+1)^2 ) / 4

  let number = m * 4;
  number = number ** (1/2);
  let numberAux = number ** (1/2);
  let floor = Math.floor(numberAux);
  let ceiling = (Number.isInteger(numberAux)) ? floor + 1 : Math.ceil(numberAux);
  if ( floor * ceiling == number ){
    return floor;
  }
  return (-1);
}

바닥과 천장을 계산하는 이유는 무엇인가요? 인수 m이 실제로 "n" 큐브의 합을 나타내는 경우 numberAux는 부분적으로 우리가 찾고 있는 숫자이기 때문입니다. 정수 부분만 있으면 됩니다. "n"입니다. 그리고 바닥이기도 합니다.

'm'이 세제곱의 합을 나타내지 않으면 함수는 -1을 반환합니다. 별거 아닙니다.

작동합니다. 6개월 된 내가 뭔가를 이해할 수 있을지는 모르겠지만.

조심하세요. 물을 마셔요???.

이전

위 내용은 Codewars - 큐브 더미를 쌓으세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.