Loading...
teodor_valkov avatar teodor_valkov 11 Точки

Някой може ли да ми каже защо:

 

Tова решение на задачата (Rabbit Hole) дава пълен брой точки единствено, ако при case:"Left" се ползва проверка с Math.Abs, но не и със закоментираните if-else клаузи?

Докато за следващата задача от темата (Japanese Roulette) - е обратното. Нейното решение дава пълен брой точки единствено, ако при case:"Left" се ползва проверка за отрицателна позиция с if-else клаузи, но не и със закоментирания ред с Math.Abs? 

 

Решенията са напълно аналогични, просто не мога да разбера защо ако се обърнат местата на закоментираните редове/проверки не се взимат пълния брой точки отново; не мога да разбера какви тестове се улавят в единия случай и какви тестове се пропускат в другия:

 

(Rabbit Hole)

https://pastebin.com/GF3xZ3Nz

 

(Japanese Roulette)

https://pastebin.com/RQVLmzzK

 

 

0
03/05/2017 19:27:46
ambiorix avatar ambiorix 640 Точки

Сега минах през решението на RabbitHole с този вход:

Left|100 Left|10 Bomb|11 RabbitHole Bomb|10 Left|2
80
 

Тук при Left за позиция получаваш -4 и с Math.Abs() я правиш да е положителна за да можеш да я ползваш в листа. Но ако използваш закоментираното position += obstacles.Count; се получава -4 + 6 = 2. Тоест съвсем друга позиция. Следователно двете неща не са аналогични както твърдиш, ако правилно съм те разбрал.

Мини няколко пъти задачите с дебъгера и така според мен ще се изяснят неяснотите.

0
teodor_valkov avatar teodor_valkov 11 Точки

Нещо се обърках малко с този Math.Abs в случая. Защо:

  • като преброим ръчно по самата картинка, ако сме на "индекс 2" и трябва да се преместим 10 пъти наляво, превъртайки два пъти колекцията, се озоваваме на последния "индекс 6"
  • като ползваме следния синтаксис, се озоваваме на "индекс 1" и Judge дава 100 точки за задачата ( в случая от снимката: 2 - (10%7 = 3) => 1 след превръщането в абсолютна стойност)

                   case "left":
                        position = position - (jumps % obstacles.Count);
                        position = Math.Abs(position);
                   break;

https://imagebin.ca/v/3LHT9ZWqAfUj

0
04/05/2017 10:30:38
ambiorix avatar ambiorix 640 Точки

Май разбрах какво те притеснява, но грешката не е при теб, а е в нелогичността и неинтуитивността на задачата. Важно е да кажа, че не съм я решавал цялата така че не приемай поста ми за 100% истина. 

"If your jump is outside of the bond of the array, you should continue from the beginning."  Това е ОК като въртиш надясно. Обаче какво се случва като въртиш наляво? Според мен ми трябвало като отида на позиция -1 то да отивам на позиция на масива array.length - 1 (тоест последната). Обаче:

https://imagebin.ca/v/3LHdI4DKZwmw - трите стрелки показват трите части на въртенето. След два скока наляво обръщаме посоката надясно.

Тоест винаги почваш от индекс 0 независимо от посоката.

MathAbs() ти помага в случая защото сякаш взимаш огледалната позиция на отрицателната. В горния пример ако беше 12 вместо 10, то позицията става 3 след MathAbs() и ако се загледаш пак си е коректно.

 

0
04/05/2017 11:13:50
teodor_valkov avatar teodor_valkov 11 Точки

Да, това да превърта само надясно, но не и наляво... frown благодаря

0
04/05/2017 12:33:57
Mystical avatar Mystical 0 Точки

Това пояснение как точно се извършва обръщането на посоката при скачане наляво ми реши задачата и ми даде 100/100.

Благодаря ти много!

 

Поздрави

Никола

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