Computer >> Máy Tính >  >> Lập trình >> Javascript

Sắp xếp lại các thẻ thành các nhóm trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số, arr, làm đối số đầu tiên và một số, num, làm đối số thứ hai.

Các số trong mảng nằm trong phạm vi [1, 13], bao gồm các giới hạn, đại diện cho chỉ số dựa trên 1 của các thẻ chơi.

Hàm của chúng tôi sẽ xác định xem có tồn tại cách sắp xếp lại các thẻ thành các nhóm để mỗi nhóm có kích thước num và bao gồm num thẻ liên tiếp hay không.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

const arr = [1, 4, 3, 2];
const num = 2;

Đầu ra

const output = 2;

Giải thích đầu ra

Vì các thẻ có thể được sắp xếp lại thành [1, 2], [3, 4]

Ví dụ

Sau đây là mã -

const arr = [1, 4, 3, 2];
const num = 2;
const canRearrange = (arr = [], num = 1) => {
   const find = (map, n, num) => {
   let j = 0
   while(j < num) {
      if(!map[n + j]) return false
         else map[n + j] -= 1
         j++
      }
      return true
   }
   let map = {}
   arr.sort(function(a, b) {return a - b})
   for(let n of arr) {
      map[n] = map[n] ? map[n] + 1 : 1
   }
   for(let n of arr) {
      if(map[n] === 0 || find(map, n, num)) continue
         else return false
   }
   return true
};
console.log(canRearrange(arr, num));

Đầu ra

true