+ Нов въпрос
flyingx 1 Точки

## Помощ за Ladybugs JS Fundamentals 80/100

Здравейте.

Някой може ли да хвърли едно око на тази задача. Надявам се да е достатъчно разбираемо: https://pastebin.com/1RYa7XjD

Линк към Judge > https://judge.softuni.org/Contests/Compete/Index/1256#9

Гърми на 80/100 и нямам представа защо. Отговорите уж са верни.

Тагове:
0
Axiomatik 1995 Точки

;-)

``````function solve(input) {
let fieldSize = input[0];

// Create Field
// let createField = [];
// for (let f = 0; f < fieldSize; f++) {
//     createField.push(0);
// }
let createField = new Array(fieldSize).fill(0);

// Put the Ladybugs on the field (starting positions)
// for (let s = 0; s < ladybugPositions.length; s++) {
//     }
// }
if (i >= 0 && i < fieldSize) {
createField[i] = 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
let [travelFrom, direction, travelTo] = command;
travelFrom = Number(travelFrom);
travelTo = Number(travelTo);

// if (travelFrom < 0 || travelFrom > fieldSize) {
if (travelFrom < 0 || travelFrom >= fieldSize || createField[travelFrom] !== 1) {
continue;
}

if (direction === 'right') {
createField[travelFrom] = 0;
let newIndex = travelFrom + travelTo;

while (newIndex < fieldSize) {
if (createField[newIndex] === 1) {
newIndex += travelTo;
continue;
}
createField[newIndex] = 1;
break;
}
} else if (direction === 'left') {
createField[travelFrom] = 0;
let newIndex = travelFrom - travelTo;

while (newIndex >= 0) {
if (createField[newIndex] === 1) {
newIndex -= travelTo;
continue;
}
createField[newIndex] = 1;
break;
}
}

// 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(' '));
}``````

0
21/06/2022 19:21:45
flyingx 1 Точки

Гениално! Благодаря много!

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.