Loading...
k.kanchev avatar k.kanchev 0 Точки

05. Bomb Numbers - алтернативен начин

https://pastebin.com/0p4Lfwe1

Това ми е решението... чупи се в Range-a някъде... не мога да го измисля по-натам. Ако е на ляво и няма достатъчно цифри от силата на бомбата, отива в Out of range...или обратното на дясно, ако няма следващи индекси, колкото силата...

0
Fundamentals Module
Hristo13 avatar Hristo13 227 Точки

Нямаш проверки за indexOfBomb

Пробвай с един for цикъл въртящ от 0 до размера на листа и на всяка итерация проверявай дали i == bombNumber.

Ако горната проверка е true вътре проверяваш дали i (индекса на бомбата) < bombNumber. Ако е true задаваш removeAtindex = 0 така няма да излизаш от граница в случай 1 1 4 1 1 1 1 1. И влизаш във втория цикъл за да премахваш индексите.  Надявам се примера да е разбираем. Алтернативно погледни друго решение обаче е на java: https://pastebin.com/67cTuSaB

 

for i = 0; i < list.size; i++

     if (i == bombNumber)  {

         int counter = 0;

        int removeAtIndex = 0;

          if (i - bombNumber < 0)

                        removeAtindex = 0;

                         counter += bombNumber - i

                      else

                      removeAtIndex = i - bombNumber

       if (i + bombNumber > list.size)

                counter += bombNumber -  list.size - 1 - i

        while (true) {

          if (counter == bombNumber * 2 + 1 || list.size == 0)

                          break;   

        list.remove(index: removeAtIndex)

         counter++

        }

       i = -1; превърташ цикъла ако попадне на бомба.

  }

 

0
07/03/2019 01:50:13
beroeca97 avatar beroeca97 1 Точки

1. Няма нужда да правиш променлива sumOfNumber и да я пълниш с for цикъл. Moжеш да използваш готовия метод .Sum() и да го принтираш.

2.  С първия си for цикъл махаш едно число отляво и след това махаш само отдясно на бомбата.

3. С втория for цикъл махаш числа само отдясно.

Можеш да направиш първия цикъл да започва от indexOfBomb - power и да върти докато стигне indexOfBomb, и да махнеш левите числа. А втория цикъл да започва от indexOfBomb, да върти докато стигне indexOfBomb + power и да махнеш бомбата + десните числа. Остава само да напишеш проверките ако индекса излиза от листа наляво или надясно.

Eто моя код, ако ти помогне : https://pastebin.com/Dfs6AX9Z

0
delian1914 avatar delian1914 99 Точки

Има малък ''хак'', с който може да се реши задачата. Вместо да примехваш стойностите от масива, можеш просто да ги зануляваш.

 

 

0
Tomo_Radomirski avatar Tomo_Radomirski 6 Точки

Супер ... още един човек с това мислене.

Що се отнася за ренджа където ще се "нулира", един цикъл като старта е Math.min(0, индекса на бомбата минус пуъра)а, края е Math.max(индекса + паура, размера на листа) ще свърши всичко. И още един while до като листа кънтейнва номера.

https://pastebin.com/QULrQ270

Успех

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