Telerik Alpha - JS Mock Exam: Coki's Products


0
Няколко начина опитах и все не успявам да се вмъкна в тайм-лимита на последните два теста.
Някой ако е успял, или успее, ще се радвам да сподели! :)



Отговори



0

И на мен би ми било интересно да видя твоето решение!

Аз с моето минавам само два теста :(

В случай, че някой иска да го погледне --> клик


от shdw_skip (0 точки)


0

Ето един вариант, дърводелски, но работи - Вариант 1

Втори вариант, без вложен цикъл, и той работи, малко по-малко памет (която не е проблем), но идентично време...  Вариант 2 Тук пробвах да набухам всички списъци в един стринг, с разделител и така, ама пак греда...

Пробвах с регекс, стигнах до някакво решение, но и с регекс последните два теста тайм-лимитват
Ще ми е интересно ако някой качи решение 100/100




0

Ето и моя вариант 90/100.
Пробвах някакви оптимизации, но без успех и последните два теста не минават. Интересно ми е, че тествах решение, което дори само итерира върху сплитнат ред от списъка с продукти и пак последния тест почти не се вмести - 1.015 сек :) Това ме навежда на мисълта, че ако изобщо има начин, той е без сплитване по regex или стринг. С др. думи обработката на тези редове трябва да става на място и без предварителна преобразуване в масив или нещо друго...

Иначе ме измъчи условието, което ми се струва непълно. Във входните данни явно има произволен брой интервали, което не е записано в условието или примерния тест. Не разбрах и защо е дадено ограничението 10 <= N < 218 , когато още в примерния тест N=5? 


от Pamir (30 точки)


0

Здравейте,

Това е моя вариант на решението (изключително грозен код :) ).

Интересното е, че в bgcoder дава 0/100, а когато изпълнявам кода локално с NodeJS, със sample input-a, резултатът съвпада. Пробвах и с няколко мои теста, като резултатите са коректни.

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


от simeonsm (0 точки)


0

Здравей,

Прегледах ти кода. Mалко ми е трудно да следя какво правиш с regex-ите, но забелязах, че във функцията productEntry си пропуснал да дефинираш currentArray (let). 

currentArray = arr[i].split(',');

Но не от там идва грешката. Направи си тест, в който имаш да купиш float продукт - примерно 1.7(kg) cheese.

Мисля, че на този ред

let multiplier = (Number(currentArray[z].match(/\d/g).toString()));

\d хваща само цели числа, съответно multiplier ти става NaN

Ето ти един готов тест, с който аз си тествах моето решение и забелязах грешката в твоето :)

let test2 = [ "10", "sveps 3", "bira1 1", "bira2 1", "bira3 1", "bira4 1", "bira5 1", "bira6 1", "bira7 1", "bira8 1", "bira9 1", "3", "sveps, 1.5 sveps", "sveps, 1.5 sveps", "bira1, 1.5 sveps", ];


от shdw_skip (0 точки)