Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

배열의 셔플 강도 확인 - JavaScript

<시간/>

숫자 배열은 배열에 두 개의 연속 숫자가 함께 나타나지 않으면 100% 섞입니다(여기서는 오름차순의 경우만 고려함). 그리고 쌍이 연속된 숫자이면 0% 섞입니다.

길이가 n인 배열의 경우 n-1쌍의 요소가 있습니다(순서가 왜곡되지 않음).

숫자 배열을 받아 배열의 셔플 강도를 나타내는 [0, 100] 사이의 숫자를 반환하는 JavaScript 함수를 작성해야 합니다.

예시

다음은 코드입니다 -

const arr = [4, 23, 1, 23, 35, 78, 4, 45, 7, 34, 7];
// this function calculates deviation from ascending sort
const shuffleIntensity = arr => {
   let inCorrectPairs = 0;
   if(arr.length <= 1){
      return 0;
   };
   for(let i = 0; i < arr.length - 1; i++){
      if(arr[i] - arr[i+1] <= 0){
         continue;
      };
      inCorrectPairs++;
   };
   return (inCorrectPairs / (arr.length -1)) * 100;
};
console.log(shuffleIntensity(arr));

출력

다음은 콘솔의 출력입니다 -

40

이는 이 배열의 40% 청크가 셔플됨을 의미합니다.