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]; 例 以下は