該算法題來自于 codewars【語言: javascript】,翻譯如有誤差,敬請諒解~
- 任務
- 給出一系列術語組成的數組,如果其中任何一個術語與
Alan Partridge
有關,就返回Mine's a Pint!
-
Mine's a Pint
之后!的數量,由所提供的數組(x)與的Alan Partridge
相關的術語個數確定。相關術語為:
Partridge
PearTree
Chat
Dan
Toblerone
Lynn
AlphaPapa
Nomad - 如果沒有任何一個術語與
Alan Partridge
相關,請返回Lynn, I've pierced my foot on a spike!!
- 例如:
part(['Grouse', 'Partridge', 'Pheasant']) // 'Mine's a Pint!'
part(['Pheasant', 'Goose', 'Starling', 'Robin']) // 'Lynn, I've pierced my foot on a spike!!'
part(['Grouse', 'Partridge', 'Pheasant', 'Goose', 'Starling', 'Robin', 'Thrush', 'Emu', 'PearTree', 'Chat', 'Dan', 'Square', 'Toblerone', 'Lynn', 'AlphaPapa', 'BMW', 'Graham', 'Tool', 'Nomad', 'Finger', 'Hamster']) // 'Mine's a Pint!!!!!!!!'
- 解答
- 其一
function part(x){
let len = x.join('').replace(/Partridge|PearTree|Chat|Dan|Toblerone|Lynn|AlphaPapa|Nomad/g,'#').split('#').length - 1;
let str = "Lynn, I've pierced my foot on a spike!!";
if (len) str = "Mine\'s a Pint" + '!'.repeat(len);
return str;
}
- 其二
function part(x){
var count = x.filter(e => ['Partridge','PearTree','Chat','Dan','Toblerone','Lynn','AlphaPapa','Nomad'].indexOf(e) != -1).length;
return count > 0 ? 'Mine\'s a Pint' + '!'.repeat(count) : 'Lynn, I\'ve pierced my foot on a spike!!';
}