JavaScriptでバナナ問題を配布する
問題
行列に並んでいる人がn人いるとすると、次のようにバナナを配りたいと思います-
-
最初の人に1本のバナナを、2人目の人に2本のバナナを与え、最後の人にn本のバナナを与えるまで続きます。
-
次に、行の最初に戻り、最初の人にn + 1本のバナナ、2人目の人にn + 2本のバナナを与え、最後の人に2*n本のバナナを与えるまで続けます。
-
このプロセスは、キャンディーがなくなるまで繰り返されます(毎回バナナをもう1つ与え、最後に到達した後、列の最初に移動します)。最後の人は残りのバナナをすべて受け取ります。
最初の引数として人数numを取り、2番目の引数としてバナナの数mを受け取るJavaScript関数を作成する必要があります。
この関数は、バナナの最終的な分布を表す配列(長さnum sum m)を返す必要があります。
たとえば、関数への入力が-
の場合const num = 3; const m = 10;
その場合、出力は-
になります。const output = [5, 2, 3];
出力の説明:
最初のターンでは、res [0] + =1であり、配列は[1,0,0]です。
2番目のターンでは、res [1] + =2であり、配列は[1,2,0]です。
3番目のターンでは、res [2] + =3であり、配列は[1,2,3]です。
4番目のターンでは、res [0] + =4であり、最終的な配列は[5,2,3]です。
例
このためのコードは-
になりますconst num = 3; const m = 10; const distributeBananas = (num = 1, m = 1) => { const res = new Array(num).fill(0); let curr = 1; while(true){ for(let i = 0; i < num; i++){ if(m < curr){ res[i] += m return res }; res[i] += curr; m -= curr; curr++; }; }; }; console.log(distributeBananas(num, m));
出力
そして、コンソールの出力は-
になります[5, 2, 3]
-
JavaScriptランダム
Math.random()関数は、0から1までの乱数を生成するために使用されます。 以下はMath.random()関数のコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document
-
JavaScriptの約束
JavaScriptのPromiseを使用すると、Promiseの作成時に値が事前にわからない非同期操作を実行できます。約束には、保留中、履行済み、拒否済みの3つの状態があります。 以下はJavaScriptのpromiseのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width,