CCCPaste

Technology Fundamentals Retake Mid Exam - 16 April 2019

 03. Easter Shopping


function easterShopping(input) {
    shopsArr = input.shift().split(" ");
    let commandsArr = input.slice(1);



    for (let i = 0; i < commandsArr.length; i++) {
        let currentAction = commandsArr[i].split(" ");
        let action = currentAction[0];

        if (action.includes("Include")) {
            let newShop = currentAction[1];
            shopsArr.push(newShop);


        } else if (action.includes("Visit")) {
            let numberOfShopsToRemove = Number(currentAction[2]);

            if (shopsArr.length >= numberOfShopsToRemove) {
                if (currentAction.includes("first")) {
                    shopsArr.splice(0, numberOfShopsToRemove);


                } else if (currentAction.includes("last")) {
                    for (let j = 0; j < numberOfShopsToRemove; j++) {
                        shopsArr.pop();
                    }

                }

            }
        } else if (action.includes("Prefer")) {
            let indexOfFirstShop = Number(currentAction[1]);
            let indexOfSecondShop = Number(currentAction[2]);
            if (indexOfFirstShop >= 0 && indexOfFirstShop < shopsArr.length && indexOfSecondShop >= 0 &&
                indexOfSecondShop < shopsArr.length) {
                let firstShop = shopsArr[indexOfFirstShop];
                let secondShop = shopsArr[indexOfSecondShop];
                shopsArr.splice(indexOfFirstShop, 1, secondShop);
                shopsArr.splice(indexOfSecondShop, 1, firstShop);

            }
        } else if (action.includes("Place")) {
            let indexToPlaceAfter = Number(currentAction[2]);
            let indexToPlaceAt = indexToPlaceAfter + 1;

            if (indexToPlaceAt >= 0 && indexToPlaceAt < shopsArr.length) {
                shopsArr.splice(indexToPlaceAt, 0, currentAction[1]);
            }
        }

    }
    console.log("Shops left:")
    console.log(shopsArr.join(" "));
}