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
-
JavaScriptを使用して最大数を形成するために数字を再配置する
問題 1つの正の3桁の整数を受け取り、その桁を再配置して可能な最大数を取得するJavaScript関数を作成する必要があります。 例 以下はコードです- const num = 149; const maxRedigit = function(num) { if(num < 100 || num > 999) return null return +num .toString() .split('') &
-
JavaScriptで数値を互いに近いn個の部分に分割する
問題 最初の引数として数値numを取り、2番目の引数として別の数値partsを受け取るJavaScript関数を作成する必要があります。 この関数は、数値numを正確に(部分)の数値に分割する必要があり、これら2つの条件を念頭に置く必要があります- 数値はできるだけ近いものにする必要があります 数値は(可能であれば)均等にする必要があります。 また、番号の順序は重要ではありません。 たとえば、関数への入力が-の場合 入力 const num = 20; const parts = 6; 出力 const output = [3, 3, 3, 3, 4, 4]; 例 以下は