01. RabbitHole issue!
Хора, моля помагайте!!! До 80/100 я докарвам и не става повече. Някакви насоки къде ми е грешката?
https://pastebin.com/yhcjmefU
Хора, моля помагайте!!! До 80/100 я докарвам и не става повече. Някакви насоки къде ми е грешката?
https://pastebin.com/yhcjmefU
Това е моето решение, дано да ти е от помощ: http://pastebin.com/DMNNRcpf
Някой може ли да ми каже защо:
Tова решение на задачата (Rabbit Hole) дава пълен брой точки единствено, ако при case:"Left" се ползва проверка с Math.Abs, но не и със закоментираните if-else клаузи?
Докато за следващата задача от темата (Japanese Roulette) - е обратното. Нейното решение дава пълен брой точки единствено, ако при case:"Left" се ползва проверка за отрицателна позиция с if-else клаузи, но не и със закоментирания ред с Math.Abs?
Решенията са напълно аналогични, просто не мога да разбера защо ако се обърнат местата на закоментираните редове/проверки не се взимат пълния брой точки отново; не мога да разбера какви тестове се улавят в единия случай и какви тестове се пропускат в другия:
(Rabbit Hole)
(Japanese Roulette)
Сега минах през решението на RabbitHole с този вход:
Left|100 Left|10 Bomb|11 RabbitHole Bomb|10 Left|2
80
Тук при Left за позиция получаваш -4 и с Math.Abs() я правиш да е положителна за да можеш да я ползваш в листа. Но ако използваш закоментираното position += obstacles.Count; се получава -4 + 6 = 2. Тоест съвсем друга позиция. Следователно двете неща не са аналогични както твърдиш, ако правилно съм те разбрал.
Мини няколко пъти задачите с дебъгера и така според мен ще се изяснят неяснотите.
Нещо се обърках малко с този Math.Abs в случая. Защо:
case "left":
position = position - (jumps % obstacles.Count);
position = Math.Abs(position);
break;
Май разбрах какво те притеснява, но грешката не е при теб, а е в нелогичността и неинтуитивността на задачата. Важно е да кажа, че не съм я решавал цялата така че не приемай поста ми за 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() и ако се загледаш пак си е коректно.