Loading...
inaivanova1990 avatar inaivanova1990 33 Точки

6. Bomb Numbers

Здравейте, на тази задача единият нулев тест не ми излиза. 

Ако някой има време, моля да погледне!

https://pastebin.com/J1JQsLH2

6.Bomb Numbers

Write a function that receives two parameters: sequence of numbers and special bomb number with a certain power.

Your task is to detonate every occurrence of the special bomb number and according to its power his neighbors from left and right. Detonations are performed from left to right and all detonated numbers disappear.

The input contains two arrays of numbers. The first contains the initial sequence and the second contains the special bomb number and it's power.

The output is the sum of the remaining elements in the sequence.

Examples

Input

Output

Comments

[1, 2, 2, 4, 2, 2, 2, 9],

[4, 2]

12

Special number is 4 with power 2. After detontaion we are left with the sequence [1, 2, 9] with sum 12.

[1, 4, 4, 2, 8, 9, 1],

[9, 3]

5

Special number is 9 with power 3. After detontaion we are left with the sequence [1, 4] with sum 5. Since the 9 has only 1 neighbour to the right we remove just it (one number instead of 3).

[1, 7, 7, 1, 2, 3],

[7, 1]

6

Detonations are performed from left to right. We could not detonate the second occurance of 7 because its already destroyed by the first occurance. The numbers [1, 2, 3] survive. Their sum is 6.

[1, 1, 2, 1, 1, 1, 2, 1, 1, 1],

[2, 1]

4

The red and yellow numbers disappear in two sequential detonations. The result is the sequence [1, 1, 1, 1]. Sum = 4.

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

Hi,

You can find the "standard" instructor solution in the new code, the trick is to calculate the lower range of the bomb-effect and the total count of numbers destroyed. For some reason, when trying to test your solution, judge gives as input only a single array (?), but the logic of the solution is still valid.

;-)

// function bombDetonation(arr1)// => Judge {
function bombDetonation(arr1, arr2) {

    let specialBombNum = arr2.shift();
    let powerBomb = arr2.shift();

    // Judge Input Setup, when only single array is passed => bombDetonation(['1 2 2 4 2 2 2 9', '4 2', '']);
    // let [specialBombNum, powerBomb] = [...arr1[1].split(' ').map(Number)];
    // let numberArray = [...arr1[0].split(' ').map(Number)];

    // for (let i = 0; i < numberArray.length; i++) {
    for (let i = 0; i < arr1.length; i++) {

        // if (arr1.includes(specialBombNum)) {
        if (arr1[i] === specialBombNum) {

            // let indexSpecial = arr1.indexOf(specialBombNum);

            // for (let i = indexSpecial - 1; i >= powerBomb; i--) {
            //     arr1.splice(i, 1);

            // }

            // for (let i = powerBomb - 1; i <= indexSpecial; i++) {
            //     arr1.splice(i, 1);

            // }

            // arr1.splice(specialBombNum);



            // If bombNumber is included in the numberArray, calulate its lower range position
            // and bombCount in order to set up your splice function. Carefull, lower range can be
            // negative and therefor validation must check and correct the range and count accordingly
            let lowerRange = i - powerBomb;
            let bombCount = 1 + (powerBomb * 2);

            while (lowerRange < 0) {
                lowerRange++;
                bombCount--;
            }

            arr1.splice(lowerRange, bombCount);
            // Important to set back the for-loop, since it has been modified and not to miss out on
            // a valid bombNumber or use includes() and indexOf() to avoid setting back i
            i--;
        }

    }
    let reducer = (a, b) => a + b;
    console.log(arr1.reduce(reducer));
}

bombDetonation([1, 1, 2, 1, 1, 1, 2, 1, 1, 1],
    [2, 1]
);
bombDetonation([1, 7, 7, 1, 2, 3],
    [7, 1]
);
bombDetonation([1, 2, 2, 4, 2, 2, 2, 9],
    [4, 2]
);
bombDetonation([1, 4, 4, 2, 8, 9, 1],
    [9, 3]
);

 

0
inaivanova1990 avatar inaivanova1990 33 Точки

Благодаря! За пореден път ми помагаш - да си жив и здрав!

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