>웹 프론트엔드 >JS 튜토리얼 >Codewars - 내림차순

Codewars - 내림차순

Linda Hamilton
Linda Hamilton원래의
2025-01-05 10:39:43531검색

안녕하세요.

Codewars - Descending Order

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

Codewars의 다음 도전을 시작합니다. 여기서는 임의의 정수를 입력으로 사용하는 함수를 개발하는 임무를 맡습니다. 숫자를 높은 것부터 낮은 것 순으로 나열해야 합니다.

저는 다음과 같은 생각으로 시작합니다.

"좋아, 숫자를 어떻게든 나누어야 할 것 같아요. 먼저 정수를 문자열로 바꿔야 할 것 같아요. 그런 다음 숫자를 나누어야 합니다. 그런 다음 순서를 정하고 모두 연결한 다음 정수로 되돌려야 합니다."

따라서 템플릿으로 시작됩니다.

function descendingOrder(n){

 // stringify
  number = n.toString();

 // split digits
  array = new Array(number.length);
  // code that fills array with digits {}

 //sort
  array.sort()

 // concatenate digits
  reverse = array.join('');

 // back to integer
  n = Number.parseInt(reverse);

  return n;
}

문자가 너무 많아서 지루해요. 그리고 여전히 작동하지 않습니다. 그렇다면 우리에게 또 무엇이 필요합니까? 우선, 배열에 숫자를 배치하는 루프는 다음과 같습니다.

 // split digits
  array = new Array(number.length);
  for(i=0 ; i<number.length ; i++){
    array[i] = number.at(i);
  }

그렇게 해야 합니다. 그렇죠?

Codewars - Descending Order

아니요. 하나의 작은 세부 사항. 악마는 디테일에 있다. 그리고 버그도 마찬가지입니다. 정렬 기능은 기본적으로 오름차순으로 정렬됩니다. 우리는 "극성을 되돌려야" 합니다. 본질적으로 이것이 필요합니다. 기본 동작은 다음과 같습니다.

(a, b) => a - b

다음이 필요합니다.

(a, b) => b - a

모든 재료 조합:

function descendingOrder(n){
  number = n.toString();
  array = new Array(number.length);
  for(i=0;i<number.length;i++){
    array[i] = number.at(i);
  }
  array.sort((a,b)=>b-a)
  reverse = array.join('');
  n = Number.parseInt(reverse);
  return n;
}

최고도 아니고 가장 간단한 솔루션도 아닙니다. 하지만 제 역할은 합니다.

시아. 물을 마셔요???.

이전

위 내용은 Codewars - 내림차순의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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