2
0

市場から売れ残らないように生きたい

実力社会って厳しい世の中。。。無能は淘汰されていくのね。。。

面倒くさいので画面パタメータをListでもらった後のFunctionだけ

ちなみに引数のListを作ってる箇所はこっちの記事に書いてあるYO!!

leftover.js
// [問題文(原文)]
// あなたはスーパーマーケットを経営しています。
// 今、ある生鮮食品を m[kg] 仕入れました。とても新鮮だったため、生のまま販売したところ、 m[kg] のうち p[%] を売ることができました。次にその売れ残りをすべてお惣菜にして販売したところ、売れ残った量のうち q[%] が売れました
// さて、m[kg] 仕入れたこの食品は最終的に何kg 売れ残ったでしょうか。ただし、生鮮食品をお総菜にする際は、量を変えることなく調理できるものとします。

function leftover(lines) {
  // 入力は以下のフォーマットで与えられます。
  // m p q
  // ここで、m, p, q はすべて整数です。
  if (!Array.isArray(lines) || lines.length !== 1) {
    console.log("1行入れろや!");
    return;
  }
  // すべてのテストケースにおいて、以下の条件をみたします。
  // 
  // ・ 1 ≦ m ≦ 1000
  // ・ 0 ≦ p, q ≦ 100
  // ・ p = 100 のとき、q = 0
  const params = lines[0].split(" ").map(num => Number(num));
  if (params.length !== 3 && !params.every(p => Number.isInteger(p))) {
    console.log("3つの整数を空白区切りで入れろや!");
    return;
  } else if (params[0] < 1 || params[0] > 1000) {
    console.log("1つ目の数字は1~1000の整数入れろや!");
    return;
  } else if (params[1] === 100 && params[2] !== 0) {
    console.log("1つ目の数字が100の時は、2つ目の数字は0を入れろや!");
    return;
  } else if (params[1] < 0 || params[1] > 100 || params[2] < 0 || params[2] > 100) {
    console.log("2つ目以降の数字は0~100の整数入れろや!");
    return;
  }

  // 売れ残った量 [kg] を一行に出力してください。ただし、真値との誤差が0.0001 未満である場合にのみ、正答とみなされます。
  // 全部売れた場合(加工したのが100%の時も含む)
  if (params[1] === 100 || params[2] === 100) {
    console.log(0);
    return;
  }
  // 売れ残り計算
  console.log(params[0] * (100 - params[1]) * (100 - params[2]) / 10000);
}

module.exports = {
  leftover
};

極力無駄な処理はしたくなかったので、
どっちかが100%だったら0を出力して終わらせたのと、
(100 - params[x]) / 100 の割る100を後ろで一気にやったぐらいで、
後は特に短く出来る要素はなかったかなという感じ。。。

どうでしょう?市場で淘汰されないですかね?

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0