Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(input) {
- let fieldSize = input[0];
- let ladybugPositions = input[1].split(' ');
- // Create Field
- let createField = [];
- for (let f = 0; f < fieldSize; f++) {
- createField.push(0);
- }
- // Put the Ladybugs on the field (starting positions)
- for (let s = 0; s < ladybugPositions.length; s++) {
- if (ladybugPositions[s] >= 0 && ladybugPositions[s] < fieldSize) {
- createField.splice(ladybugPositions[s], 1, 1);
- }
- }
- for (let i = 2; i < input.length; i++) {
- // create directions
- let command = input[i].split(' '); // split the current input into 3 parts
- let direction = command[1]; // 1 - left or right
- let travelFrom = Number(command[0]); // 2- starting position
- let travelTo = Number(command[2]); // 3 - ending position
- if (travelFrom < 0 || travelFrom > fieldSize) {
- continue;
- }
- // negative steps reversal
- if (travelTo < 0) {
- travelTo = Math.abs(travelTo);
- if (direction === "right") {
- direction = 'left';
- } else if (direction === "left") {
- direction = 'right';
- }
- }
- // Move Right
- if (direction === "right" && createField[travelFrom] === 1) {
- travelTo = travelFrom + travelTo;
- // first remove remove the bug
- createField[travelFrom] = 0;
- // then if the spot is taken
- if (createField[travelTo] !== 0) {
- // fly until you find one
- for (let x = 0; x < fieldSize; x++) {
- if (createField[travelTo] !== 0) {
- travelTo++
- }
- if (createField[travelTo] === 0) {
- break;
- }
- }
- }
- // land on the free one
- if (createField[travelTo] === 0) {
- let ladybugIsMoving = createField.splice(travelTo, 1, 1);
- }
- // Move left
- } else if (direction === "left" && createField[travelFrom] === 1) {
- travelTo = travelFrom - travelTo;
- // first remove remove the bug
- createField[travelFrom] = 0;
- // if the spot is taken
- if (createField[travelTo] !== 0) {
- // fly until you find one
- for (let x = 0; x < fieldSize; x++) {
- if (createField[travelTo] !== 0) {
- travelTo--;
- }
- if (createField[travelTo] === 0) {
- break;
- }
- }
- }
- // land on the free one
- if (createField[travelTo] === 0) {
- let ladybugIsMoving = createField.splice(travelTo, 1, 1);
- }
- }
- }
- console.log(createField.join(' '));
- }
- solve([3, '0 1', '0 right 1', '2 right 1'])
- solve([5, '3', '3 left 2', '1 left -2'])
- solve([3, '0 1 2', '0 right 1', '1 right 1', '2 right 1'])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement