市場から売れ残らないように生きたい
実力社会って厳しい世の中。。。無能は淘汰されていくのね。。。
面倒くさいので画面パタメータを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を後ろで一気にやったぐらいで、
後は特に短く出来る要素はなかったかなという感じ。。。
どうでしょう?市場で淘汰されないですかね?