Loading...
flyingx avatar flyingx 1 Точки

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

Здравейте.

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

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

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

 

 

Тагове:
0
JavaScript Fundamentals
Axiomatik avatar Axiomatik 2422 Точки
Best Answer

;-)

function solve(input) {
    let fieldSize = input[0];
    let ladybugPositions = input[1].split(' ').map(Number);

    // 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 (ladybugPositions[s] >= 0 && ladybugPositions[s] < fieldSize) {
    //         createField.splice(ladybugPositions[s], 1, 1);
    //     }
    // }
    ladybugPositions.forEach((i) => {
        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 avatar flyingx 1 Точки

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

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