Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptでカードをグループに再配置する


問題

最初の引数として数値の配列arrを取り、2番目の引数として数値numを受け取るJavaScript関数を作成する必要があります。

配列内の数字は[1、13]の範囲で、制限を含み、トランプの1ベースのインデックスを表します。

私たちの関数は、各グループのサイズがnumで、連続するnum枚のカードで構成されるようにカードをグループに再配置する方法があるかどうかを判断する必要があります。

たとえば、関数への入力が

入力

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

出力

const output = 2;

出力の説明

カードは[1、2]、[3、4]

として再配置できるため

以下はコードです-

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));

出力

true

  1. JavaScriptを使用して最大数を形成するために数字を再配置する

    問題 1つの正の3桁の整数を受け取り、その桁を再配置して可能な最大数を取得するJavaScript関数を作成する必要があります。 例 以下はコードです- const num = 149; const maxRedigit = function(num) {    if(num < 100 || num > 999)       return null    return +num    .toString()    .split('')   &

  2. JavaScriptで数値を互いに近いn個の部分に分割する

    問題 最初の引数として数値numを取り、2番目の引数として別の数値partsを受け取るJavaScript関数を作成する必要があります。 この関数は、数値numを正確に(部分)の数値に分割する必要があり、これら2つの条件を念頭に置く必要があります- 数値はできるだけ近いものにする必要があります 数値は(可能であれば)均等にする必要があります。 また、番号の順序は重要ではありません。 たとえば、関数への入力が-の場合 入力 const num = 20; const parts = 6; 出力 const output = [3, 3, 3, 3, 4, 4]; 例 以下は