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

JavaScriptで部屋の壁を覆うのに必要な壁紙(シート)のロール数を計算する方法

問題

ここでは、部屋の長さ高さを引数として受け取るJavaScript関数を作成する必要があります。

この関数は、1ロールのシートの幅が 0.52単位、長さが 10単位 であるという前提のもとで、部屋全体(4面の壁)を覆うために必要なシートのロール数を計算します。

また、利便性を考慮し、実際に必要な長さに対して 15% の余裕をもたせたロール数を返すものとします。

計算の考え方

必要なロール数は、次の手順で求められます。

① 床面の周囲の長さに高さを掛けて、4面の壁の合計面積を算出する
② シートの幅×長さから、1ロールあたりの面積を求める
③ 壁の総面積をロールの面積で割り、15%の余裕を加えたうえで切り上げる

コード例

const findSheet = (length, width, height) => {
   if(length === 0 || width === 0){
      return 0;
   }
   const roomArea = 2 * (length + width) * height;
   const rollArea = 0.52 * 10;
   const required = Math.ceil(roomArea / rollArea * 1.15);
   return required;
};
console.log(findSheet(4, 3.5, 3));

コードの解説

まず、長さまたは幅が 0 の場合はカバーすべき壁が存在しないため、そのまま 0 を返します。

roomArea は壁の総面積です。2 * (length + width) で床面の周囲の長さを求め、それに高さを掛けることで、向かい合う2組の壁を含めた4面すべての合計面積が算出されます。

rollArea は1ロールの面積で、幅0.52 × 長さ10 = 5.2平方単位となります。

最後に、壁の総面積を1ロールの面積で割り、さらに1.15倍(15%増)してから Math.ceil() で小数点以下を切り上げることで、必要なロール数を整数として取得しています。

出力結果

10

計算の検証

入力値が length=4、width=3.5、height=3 の場合を確認してみましょう。

壁の総面積 = 2 × (4 + 3.5) × 3 = 45平方単位
1ロールの面積 = 0.52 × 10 = 5.2平方単位
必要数 = 45 ÷ 5.2 × 1.15 ≒ 9.95 → 切り上げて 10

このように、余裕分を含めても10ロールあれば部屋全体を覆うことができると判定されます。

  1. JavaScriptで2次元行列を水平方向に反転し、さらにビット反転する方法

    問題0と1のみで構成される2次元のバイナリ配列 arr を唯一の引数として受け取るJavaScript関数を作成する必要があります。この関数は、まず行列を水平方向に反転(フリップ)し、その後に行列表現上の各値を反転(インバート)して、最終的な結果の行列を返すものとします。用語の定義水平方向への反転とは、行列の各行を逆順に並べ替えることを意味します。たとえば、[1, 1, 0] を水平方向に反転すると [0, 1, 1] になります。反転(インバート)とは、行列内のすべての0を1に、すべての1を0に置き換えることを意味します。たとえば、[0, 1, 1] を反転すると [1, 0, 0] になり

  2. CSSのscale()メソッドで要素の幅と高さを変更する方法

    CSSのscale()メソッドとは CSSで要素の幅と高さを変更したい場合、transformプロパティのscale()メソッドを使用します。scale()は要素を拡大・縮小するための変換関数で、元のサイズを基準とした倍率を指定するだけで、直感的にサイズ調整が行える便利な機能です。 scale()の基本構文 scale(x, y); x:スケーリングベクトルの横方向(X軸)の倍率を表す数値です。 y:スケーリングベクトルの縦方向(Y軸)の倍率を表す数値です。 なお、yを省略した場合はxと同じ値が適用されるため、要素は縦横比を保ったまま拡大・縮小されます。 使用例 以下の例では、幅40px・