Loading...

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

KristianZanev avatar KristianZanev 16 Точки

Грешна задача, но дава 100 точки - 6. Bomb numbers | Exercise: Lists / Arrays Advanced - JS Fundamentals

Здравейте,

Задачата е 6. Bomb numbers  линк . Пробвах да я реша по начина по който трейнъра показва във видео лекцията- Пускам задачата в джъдж - дава 100/100. След това реших да си направя преговор, започнах да дебъгвам и да експериментирам с няколко различни инпута. В крайна сметка открих, че с един от инпутите дава резултат 0 вместо 1. Та въпроса ми е дали някой от вас, колеги, е успял да реши напълно следната задача със splice метода и да дава верен резултат със следния инпут - ([1, 4, 1, 1, 1, 1, 1, 4, 1], [4, 2])  Ето и решението от лекцията:

function bomb(numbers, params) {
  let [target, power] = params;

  for (let i = 0; i < numbers.length; i++) {
    let currentNum = numbers[i];

    if (currentNum === target) {
      let startIndex = Math.max(0, i - power); //math.max in cases where index is -1(outside the array)
      let countToEnd = power * 2 + 1;

      numbers.splice(startIndex, countToEnd);
      i = i - power - 1; //
    }
  }
  // console.log(numbers);
  console.log(numbers.reduce((a, b) => a + b, 0));
}
bomb([1, 4, 1, 1, 1, 1, 1, 4, 1], [4, 2]); //interesting result

 

Тагове:
0
Fundamentals Module 16/06/2019 15:32:20
hadjev avatar hadjev 1 Точки

Здравейте,

реших задачата и с твоето условие: [1, 4, 1, 1, 1, 1, 1, 4, 1], [4, 2]

Кода е тук: https://pastebin.com/NNZh72F0

Обяснение:

  • while се изпълнява докато има специално число.
  • С elementsToRemove = bombPower * 2 + 1 искам да премахна всички елементи на веднъж (тук е 2х преди индекса, 2х след индекса и самата 'бомба') = 5 елемента
  • Проблемът тук е, че startIndex става негативен (четворката е на 1 индекс, а аз трябва да премахна два елемента, което води до негативен индекс). Така аз реално казвам на splice да премахва елементи от края на масива, а аз искам да почна от нулевият...
  • Затова правя проверка и, ако startIndex <  0, го занулявам. Но преди това трябва да се оправи бройката на elementsToRemove, защото тя все още е 5, а аз искам да махна само 4 (един елемент преди четворката, самата четворка и два елемента след нея). Затова на 11-ти ред изваждам разликата, а на 12-ти занулявам индекса.

Надявам се да съм успял да помогна

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