該算法題來自于 codewars【語言: javascript】,翻譯如有誤差,敬請諒解~

- 場景
你喜歡比薩,但是你更細(xì)喜歡...你的錢。當(dāng)你去當(dāng)?shù)氐谋人_店時(shí),有一件事讓你感到意外的是,盡管他們列出了每個(gè)比薩餅的尺寸和價(jià)格,但是并沒有列出每平方披薩的價(jià)格。
- 任務(wù)
- 寫一個(gè)函數(shù)需要兩個(gè)參數(shù) - 直徑,價(jià)格 - 并將每平方的價(jià)格返回,保留兩位小數(shù)。 (作為一個(gè)數(shù)字,而不是字符串)
- 例如:
pizzaPrice(7, 4.30) // 返回 0.11 - 假設(shè)比薩是直徑均勻的圓形披薩,并使用Math.PI作為π值。
- 如果參數(shù)不足,或者如果它們不是數(shù)字,直接返回0。
- 解答
- 其一
const pizzaPrice = (diameter, price) => {
if (typeof diameter == 'number' && typeof price == 'number') {
return (price/(Math.pow(diameter/2,2)* Math.PI)).toFixed(2)*1
} else {
return 0;
}
}
- 其二
function pizzaPrice(d,p) {
return Math.round(p/(Math.PI*d*d)*400)/100||0
}
- 其三
function pizzaPrice(diameter, price) {
if(arguments.length!=2) return 0;
if(typeof(arguments[0])!='number' || typeof(arguments[1])!='number') return 0;
var area = (Math.PI)*diameter*diameter/4;
return parseFloat((price/area).toFixed(2));
}
- 其四
function pizzaPrice(diameter, price) {
if(isNaN(diameter+price)) return 0;
let cost = price/(Math.PI*diameter*diameter/4);
return parseFloat(cost.toFixed(2));
}
- 其五
function pizzaPrice(d, p) {
return isNaN(d) || isNaN(p) ? 0 : +(p / (Math.PI * d * d / 4)).toFixed(2);
}