Work in progress. Codewars kata for bowling pins.
//https://www.codewars.com/kata/5531abe4855bcc8d1f00004c/train/javascript
function scoreAt(frame, total, wasStrike, wasSpare) {
var strike = frame[0] === "X";
var spare = !strike && frame[1] === "/";
if (wasSpare) {
if (spare) {
return [total + (10 + frame[0]) + frame[0], false, true];
} else if (strike) {
return [total + (10 + 10 + 10), true, false];
} else {
return [total + 10 + frame[0] + frame[0], false, false];
}
}
if (wasStrike) {
if (spare) {
return [total + (10 + frame[0] + frame[1]) + (frame[0] + frame[1]), false, true];
} else if (strike) {
return [total + (10 + 10 + 10), true, false];
} else {
return [total + 10 + frame[0] + frame[0] + frame[1] + frame[1], false, false];
}
}
if (strike) {
return [total + 10, true, false];
}
if (spare) {
return [total + frame[0], false, true]
}
return [total + frame[0] + frame[1], false, false];
}
function bowlingScore(frames) {
var _total=0,_strike=false,_spare=false,retVal,arr,frame;
arr=frames.split(' ');
for(var i=0;i<arr.length;i++){
frame=arr[i].split('').map(function(e,index){return !isNaN(parseInt(e))?parseInt(e):e});
retVal=scoreAt(frame,_total,_strike,_spare);
_total=retVal[0];
_strike=retVal[1];
_spare=retVal[2];
}
return _total;
}