Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let mapStrike = function(frame) {
- return frame.map(frameThrow => (frameThrow == 'X')
- ? 10
- : frameThrow);
- };
- let expandStrike = function(frame, i, arr) {
- if ((frame[0] == 10) && (i < 9)) {
- if ((frame[1] == undefined) && (frame[2] == undefined)) {
- nextFrame = arr[i + 1];
- frame[1] = nextFrame[0];
- if ((nextFrame[0] == 10) && (i < 8)) {
- nextFrame = arr[i + 2];
- frame[2] = nextFrame[0];
- } else {
- frame[2] = nextFrame[1];
- }
- }
- }
- return frame;
- };
- let mapSpare = function(frame) {
- return frame.map((frameThrow, i, arr) => (frameThrow == '/')
- ? (10 - arr[0])
- : parseInt(frameThrow));
- };
- let expandSpare = function(frame, i, arr) {
- if (((frame[0] + frame[1]) == 10) && (i < 10)) {
- nextFrame = arr[i + 1];
- if (frame[2] == undefined) {
- frame[2] = nextFrame[0];
- }
- }
- return frame;
- };
- let scoreFrame = function(frame) {
- return frame.reduce((acc, frameThrow) => acc + frameThrow, 0);
- }
- let calculateScore = function(frames) {
- frames = frames.map(frame => frame.split(/,?/));
- frames = frames.map(mapStrike);
- frames = frames.map(mapSpare);
- frames = frames.map(expandStrike);
- frames = frames.map(expandSpare);
- frames = frames.map(scoreFrame);
- return frames.reduce((acc, frame) => acc + frame, 0);
- }
- let result;
- result = calculateScore(["X", "X", "X", "X", "X", "X", "X", "X", "X", "XXX"]);
- console.log(300, result);
- result = calculateScore(["X", "X", "X", "X", "X", "X", "X", "X", "X", "XX9"]);
- console.log(299, result);
- result = calculateScore(["9,/", "9,/", "9,/", "9,/", "9,/", "9,/", "9,/", "9,/", "9,/", "9,/,9"]);
- console.log(190, result);
- result = calculateScore(["1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/,1"]);
- console.log(110, result);
- result = calculateScore(["1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/,1"]);
- console.log(110, result);
- result = calculateScore(["X", "9,/", "X", "9,/", "X", "9,/", "X", "9,/", "X", "9,/,X"]);
- console.log(200, result);
- result = calculateScore(["X", "9,/", "X", "9,/", "X", "9,/", "X", "9,/", "X", "9,/,X"]);
- console.log(200, result);
- result = calculateScore(["6,3", "7,2", "8,1", "9,0", "X", "5,4", "6,3", "7,2", "8,1", "9,0"]);
- console.log(100, result);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement