examinedliving
6/10/2017 - 1:46 PM

Work in progress. Codewars kata for bowling pins.

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;
}