Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(input) {
- let field = input.shift().split('|').map(Number);
- let points = 0;
- for (let command of input) {
- if (command === 'Game over') {
- break;
- } else if (command === 'Reverse') {
- field.reverse();
- } else {
- let params = command.split('@');
- let startIndex = Number(params[1]);
- let length = Number(params[2]);
- if (startIndex >= 0 && startIndex < field.length) {
- if (command.includes('Left')) {
- if (length < 0) {
- length = Math.abs(length);
- right(field, length, points);
- } else {
- left(startIndex, length, points, field);
- }
- } else if (command.includes('Right')) {
- if (length < 0) {
- length = Math.abs(length);
- left(startIndex, length, points, field);
- } else {
- right(field, length, points);
- }
- }
- } else {
- continue;
- }
- }
- }
- function left(startIndex, length, points, field) {
- let target = Math.abs(startIndex - (length % field.length)) + 1;
- if (field[target] >= 5) {
- field[target] -= 5;
- points += 5;
- } else {
- points += field[target];
- field[target] = 0;
- }
- return points;
- }
- function right(field, length, points) {
- let target = (field.length - 1) - (length % field.length);
- if (field[target] >= 5) {
- field[target] -= 5;
- points += 5;
- } else {
- points += field[target];
- field[target] = 0;
- }
- return points;
- }
- console.log(field.join(' - '));
- console.log(`Iskren finished the archery tournament with ${points} points!`);
- }
- solve([
- '10|10|10|10|10',
- 'Shoot Left@0@2',
- 'Shoot Right@4@5',
- 'Shoot Right@6@5',
- 'Reverse',
- 'Game over',
- '']);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement