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

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]

  1. 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

  2. JavaScriptの約束

    JavaScriptのPromiseを使用すると、Promiseの作成時に値が事前にわからない非同期操作を実行できます。約束には、保留中、履行済み、拒否済みの3つの状態があります。 以下はJavaScriptのpromiseのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width,