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

Задача 07. Search for a Number, JS Fundamentals (Exercise)

Здравейте. Нуждая се от малко помощ за тази задача. Успях да я напиша, след което ми дава 40/100 в Judge, и тъй като нулевият тест е само един, и той е верен, не мога да видя къде гърми.

Код: https://pastebin.com/yhMhQwxG

 

Условие: 

You will receive two arrays of integers. The second array is contains exactly three numbers.

First number represents the number of elements you have to take from the first array (starting from the first one).

Second number represents the number of elements you have to delete from the numbers you took (starting from the first one).

Third number is the number we search in our collection after the manipulations.

As output print how many times that number occurs in our array in the following format:

"Number {number} occurs {count} times."

 

Input

Output

Comments

[5, 2, 3, 4, 1, 6],

[5, 2, 3]

"Number 3 occurs 1 times."

First we take 5 elements from the array. Delete the first 2 elements.
Then we search for the number 3.

 

Поздрави

Тагове:
0
Programming Fundamentals
poli1993 avatar poli1993 11 Точки
Best Answer

Здрасти, 

arr.shift(criteria[1]); не премахва първите два елемента. shift() метода не се използва с параметър и премахва първия елемент от масива. Трябва да премахнеш първите два елемента и след това да обходиш масива.  По начина по който си го направил на 8ми и 9ти ред проверяваш дали се съдържа елемента и break-ваш. По този начин counter винаги ще ти бъде равен на 1 и дори да имаш още 3ки, ще ти намери само една, защото break-ваш след първата намерена 3ка. 

Това е твоето решение с няколко поправки, дава 100 в джъдж: https://pastebin.com/nZuFTV6c

 

0
vendy96 avatar vendy96 1 Точки

Да, ясно. Използвал съм shift(), който по подразбиране работи без параметри, и премахва само първият елемент, докато всъщност е трябвало да използвам splice(), премахвайки range, в който попадат първите 2 елемента.

А ако използвам includes() значи ли, че count ще се инкрементира само веднъж, защото е наличен елементът изобщо, а не за всяко повторение на елемента (в случая arr[i]===(el), което е използвано)?

 

Благодаря иначе за отговорът!

 

Поздрави

0
Pittyr avatar Pittyr 3 Точки

Здравейте,

Проблема ми се струва, че идва главно от очакванията ти за shift(). Shift премахва първия елемент от масива, без значение какво ще му подадеш в скобите, следователно в твоя код ти очакваш да премахнеш определен елемент и затова хитро след това си използвал includes. Обаче в случая се получава така, че ти премахваш първия елемент, а той може да не е търсения от теб и т.н.

Ще споделя код в който съм се опитал максимално да се придържам към твоя начин на писане, за да може да стане максимално ясно.

 

function solve(nums, criteria) {
    let count = 0;
    let el = criteria[2];

    let arr = nums.slice(0, criteria[0]);
    // here
    arr = arr.slice(criteria[1], arr.length);

    for (let i = 0; i < arr.length; i++) {
        if (arr[i] === el) {
            count++;
        }
    }
    

    console.log(`Number ${el} occurs ${count} times.`)

};

 

0
20/10/2019 10:42:26
vendy96 avatar vendy96 1 Точки

Ясно, просто съм използвал неправилната функция за случая. Благодаря за отговора и обяснението.

 

Поздрави

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