Advertisement
Guest User

Ladybugs, JS Fundamentals

a guest
Jun 21st, 2022
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input) {
  2.     let fieldSize = input[0];
  3.     let ladybugPositions = input[1].split(' ');
  4.  
  5.     // Create Field
  6.     let createField = [];
  7.     for (let f = 0; f < fieldSize; f++) {
  8.         createField.push(0);
  9.     }
  10.     // Put the Ladybugs on the field (starting positions)
  11.     for (let s = 0; s < ladybugPositions.length; s++) {
  12.         if (ladybugPositions[s] >= 0 && ladybugPositions[s] < fieldSize) {
  13.             createField.splice(ladybugPositions[s], 1, 1);
  14.         }
  15.     }
  16.  
  17.     for (let i = 2; i < input.length; i++) {
  18.         // create directions
  19.         let command = input[i].split(' '); // split the current input into 3 parts
  20.         let direction = command[1]; // 1 - left or right
  21.         let travelFrom = Number(command[0]); // 2- starting position
  22.         let travelTo = Number(command[2]); // 3 - ending position
  23.  
  24.         if (travelFrom < 0 || travelFrom > fieldSize) {
  25.             continue;
  26.         }
  27.         // negative steps reversal
  28.         if (travelTo < 0) {
  29.             travelTo = Math.abs(travelTo);
  30.             if (direction === "right") {
  31.                 direction = 'left';
  32.             } else if (direction === "left") {
  33.                 direction = 'right';
  34.             }
  35.         }
  36.         // Move Right
  37.         if (direction === "right" && createField[travelFrom] === 1) {
  38.             travelTo = travelFrom + travelTo;
  39.             // first remove remove the bug
  40.             createField[travelFrom] = 0;
  41.             // then if the spot is taken
  42.             if (createField[travelTo] !== 0) {
  43.                 // fly until you find one
  44.                 for (let x = 0; x < fieldSize; x++) {
  45.                     if (createField[travelTo] !== 0) {
  46.                         travelTo++
  47.                     }
  48.                     if (createField[travelTo] === 0) {
  49.                         break;
  50.                     }
  51.                 }
  52.             }
  53.             // land on the free one
  54.             if (createField[travelTo] === 0) {
  55.                 let ladybugIsMoving = createField.splice(travelTo, 1, 1);
  56.             }
  57.             // Move left
  58.         } else if (direction === "left" && createField[travelFrom] === 1) {
  59.             travelTo = travelFrom - travelTo;
  60.             // first remove remove the bug
  61.             createField[travelFrom] = 0;
  62.             // if the spot is taken
  63.             if (createField[travelTo] !== 0) {
  64.                 // fly until you find one
  65.                 for (let x = 0; x < fieldSize; x++) {
  66.                     if (createField[travelTo] !== 0) {
  67.                         travelTo--;
  68.                     }
  69.                     if (createField[travelTo] === 0) {
  70.                         break;
  71.                     }
  72.                 }
  73.             }
  74.             // land on the free one
  75.             if (createField[travelTo] === 0) {
  76.                 let ladybugIsMoving = createField.splice(travelTo, 1, 1);
  77.             }
  78.         }
  79.     }
  80.     console.log(createField.join(' '));
  81. }
  82.  
  83. solve([3, '0 1', '0 right 1', '2 right 1'])
  84.  
  85. solve([5, '3', '3 left 2', '1 left -2'])
  86.  
  87. solve([3, '0 1 2', '0 right 1', '1 right 1', '2 right 1'])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement