Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. function solve(input) {
  2. let field = input.shift().split('|').map(Number);
  3. let points = 0;
  4. for (let command of input) {
  5.  
  6. if (command === 'Game over') {
  7. break;
  8.  
  9. } else if (command === 'Reverse') {
  10. field.reverse();
  11.  
  12. } else {
  13. let params = command.split('@');
  14. let startIndex = Number(params[1]);
  15. let length = Number(params[2]);
  16.  
  17. if (startIndex >= 0 && startIndex < field.length) {
  18. if (command.includes('Left')) {
  19.  
  20. if (length < 0) {
  21. length = Math.abs(length);
  22. right(field, length, points);
  23.  
  24. } else {
  25. left(startIndex, length, points, field);
  26.  
  27. }
  28.  
  29. } else if (command.includes('Right')) {
  30.  
  31. if (length < 0) {
  32. length = Math.abs(length);
  33. left(startIndex, length, points, field);
  34.  
  35. } else {
  36.  
  37. right(field, length, points);
  38.  
  39. }
  40. }
  41.  
  42. } else {
  43.  
  44. continue;
  45. }
  46. }
  47. }
  48.  
  49. function left(startIndex, length, points, field) {
  50. let target = Math.abs(startIndex - (length % field.length)) + 1;
  51.  
  52. if (field[target] >= 5) {
  53. field[target] -= 5;
  54. points += 5;
  55.  
  56. } else {
  57. points += field[target];
  58. field[target] = 0;
  59.  
  60. }
  61. return points;
  62. }
  63.  
  64. function right(field, length, points) {
  65. let target = (field.length - 1) - (length % field.length);
  66.  
  67. if (field[target] >= 5) {
  68. field[target] -= 5;
  69. points += 5;
  70.  
  71. } else {
  72. points += field[target];
  73. field[target] = 0;
  74. }
  75. return points;
  76. }
  77. console.log(field.join(' - '));
  78. console.log(`Iskren finished the archery tournament with ${points} points!`);
  79. }
  80. solve([
  81. '10|10|10|10|10',
  82. 'Shoot Left@0@2',
  83. 'Shoot Right@4@5',
  84. 'Shoot Right@6@5',
  85. 'Reverse',
  86. 'Game over',
  87. '']);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement