Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. let mapStrike = function(frame) {
  2. return frame.map(frameThrow => (frameThrow == 'X')
  3. ? 10
  4. : frameThrow);
  5. };
  6.  
  7. let expandStrike = function(frame, i, arr) {
  8. if ((frame[0] == 10) && (i < 9)) {
  9. if ((frame[1] == undefined) && (frame[2] == undefined)) {
  10. nextFrame = arr[i + 1];
  11. frame[1] = nextFrame[0];
  12. if ((nextFrame[0] == 10) && (i < 8)) {
  13. nextFrame = arr[i + 2];
  14. frame[2] = nextFrame[0];
  15. } else {
  16. frame[2] = nextFrame[1];
  17. }
  18. }
  19. }
  20.  
  21. return frame;
  22. };
  23.  
  24. let mapSpare = function(frame) {
  25. return frame.map((frameThrow, i, arr) => (frameThrow == '/')
  26. ? (10 - arr[0])
  27. : parseInt(frameThrow));
  28. };
  29.  
  30. let expandSpare = function(frame, i, arr) {
  31. if (((frame[0] + frame[1]) == 10) && (i < 10)) {
  32. nextFrame = arr[i + 1];
  33. if (frame[2] == undefined) {
  34. frame[2] = nextFrame[0];
  35. }
  36. }
  37.  
  38. return frame;
  39. };
  40.  
  41. let scoreFrame = function(frame) {
  42. return frame.reduce((acc, frameThrow) => acc + frameThrow, 0);
  43. }
  44.  
  45. let calculateScore = function(frames) {
  46. frames = frames.map(frame => frame.split(/,?/));
  47. frames = frames.map(mapStrike);
  48. frames = frames.map(mapSpare);
  49. frames = frames.map(expandStrike);
  50. frames = frames.map(expandSpare);
  51. frames = frames.map(scoreFrame);
  52.  
  53. return frames.reduce((acc, frame) => acc + frame, 0);
  54. }
  55.  
  56. let result;
  57.  
  58. result = calculateScore(["X", "X", "X", "X", "X", "X", "X", "X", "X", "XXX"]);
  59. console.log(300, result);
  60. result = calculateScore(["X", "X", "X", "X", "X", "X", "X", "X", "X", "XX9"]);
  61. console.log(299, result);
  62. result = calculateScore(["9,/", "9,/", "9,/", "9,/", "9,/", "9,/", "9,/", "9,/", "9,/", "9,/,9"]);
  63. console.log(190, result);
  64. result = calculateScore(["1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/,1"]);
  65. console.log(110, result);
  66. result = calculateScore(["1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/", "1,/,1"]);
  67. console.log(110, result);
  68. result = calculateScore(["X", "9,/", "X", "9,/", "X", "9,/", "X", "9,/", "X", "9,/,X"]);
  69. console.log(200, result);
  70. result = calculateScore(["X", "9,/", "X", "9,/", "X", "9,/", "X", "9,/", "X", "9,/,X"]);
  71. console.log(200, result);
  72. result = calculateScore(["6,3", "7,2", "8,1", "9,0", "X", "5,4", "6,3", "7,2", "8,1", "9,0"]);
  73. console.log(100, result);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement