Професионална програма
Loading...
+ Нов въпрос
anton_cholakov avatar anton_cholakov 88 Точки

[Homework] JavaScript Basics -Loops-Arrays-String

Здравейте, колеги! Представям Ви решенията си от последното домашно :) 

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

Ще се радвам на feedback :)

 

01. Number CheckerHTML + JS /честно казано тук имам някои питанки, които ще посоча по долу/

02. Find Min and Max NumberHTML + JS

03. PropertiesHTML + JS

04. Create ArrayHTML + JS

05. Compare CharsHTML + JS

06. Maximal SequenceHTML + JS

07. Maximal Increasing SequenceHTML + JS

08. Sort ArrayHTML + JS

09. Most Frequent NumberHTML + JS

10. Reverse StringHTML + JS

11. Check the BracketsHTML + JS

12. Substring CountHTML + JS

13. Replace the White-SpacesHTML + JS

14. PalindromesHTML + JS --> Определено имам нужда от помощ с регулярните изрази :( .. Ако някой ми помогне, ще съм много благодарен!

15. Most Frequent WordJS

16. Cards FrequencesJS

17. Extract Element Content: JS

18. Replace A TagsJS

19. Text ModifierJS

.. и специални благодарности към ZvetanIG за насоките с регулярните изрази! :)

 

edit: сега загрях, че всъщност html файловете са излишни, но така или иначе съм ги качил вече в github и линкнал

21
JavaScript Fundamentals
ttitto avatar ttitto 1154 Точки

По въпросът ти: Означава, че не е делимо нито на 4, нито на 5

А моят въпрос за задача 5: когато е дадена функция с един параметър value, имаме ли право да правим два параметъра. Това все пак е друг overload на функцията и според мен не е по условието. И втори въпрос: ако това решение беше в judge - системата как щеше да изглежда взимането на входа от два масива всеки на отделен ред, без други разделители освен новия ред?

1
anton_cholakov avatar anton_cholakov 88 Точки

Всъщност да, така написана пета задача е грешна. Какъв е начинът да взема правилно двата масива от входа както е в условието?

0
ttitto avatar ttitto 1154 Точки

Обиколих форума и никъде няма отговор за този специфичен случай. Надявам се много скоро някой да помогне!

0
Samuil.Petrow avatar Samuil.Petrow 1549 Точки

.split(/\r\n|\r|\n/g);

Може и по-опростено, но не сме много сигурни кое ще ни е EOL Character

п.п: Иначе в judge-a според мен отделните редове (респективно масиви) биха били на отделни индекси в params, подадени като стринг - params[0] първият масив като стринг и т.н

1
borislavml avatar borislavml 368 Точки

Винаги, когато по условие е дадено, че входа към функцията ще е повече от един параметър ползвам "вълшебния" arguments: function someFunction(arguments) {}; През него може много лесно да се достъпва абсолютно всичко което ти подадат - интежъри, стрингове, булиани, масиви, обекти, масиви от масиви и т.н. Примерно ако промелнливите ти са 3 на брой и от примитивн тип: function someFunction(5, 'string', true) {}; , достъпваш всяка една от тях съответно с arguments[0], arguments[1], arguments[2]. Ако ти подадат два масива както е в случая с 5-та задача, или масив от масиви се действа по същия начин.  Елементите на първия масив от масива от масиви ще се достъпват съответно с arguments[0][i] и т.н. Но в 5-та задача има и доста по хитро решение без избщо да се занимаваме с цикли и масиви - ЦЪК. Работи, при така подаден инпут, пробвах да го счупя с whitespace.

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

Все пак мисля, че въпроса с инпута за изпита си е голям проблем и според мян няма да е лошо някой от екипа да разясни подробн как ще се случват нещата и да качат по-рано поне една две  примерни задачи с авторски решения, а не чак в дните за подготовка, които ще са сигурно 2 дена преди изпита да разберем как ще се случват нещата!

15
anton_cholakov avatar anton_cholakov 88 Точки

Всъщност и аз направих нещо такова, но интересно защо ми връщаше елементите от първия масив, тоест при [1,2,3][4,5,6] 

args[0] -> 1

args[1] -> 2

Явно съм объркал нещо, благодаря за hint-a :)

Много добро решение, наистина

0
KostadinStefanov avatar KostadinStefanov 32 Точки

Защо в кода ти  function compareChars()  работи коректно, а

function compareChars(arguments)  - не

0
borislavml avatar borislavml 368 Точки

Не мога да разбера въпроса ти, какво точно имаш в предивт не работи. Като и подаваш някакви конкретни параметри ли!?

0
anton_cholakov avatar anton_cholakov 88 Точки

Интересно ми е как реализирахте 12 задача и по-точно - в примерите на места в input-a има символ ' (апостроф) който чупи самия код при въвеждане:

countSubstringOccur(['in', 'I'm in Sofia']) например

Аз лично не виждам начин да се избяга от това нещо при условия, че "набиваме" така входни данни, иначе няма да е проблем при нормален input от user-a

1
GoShow avatar GoShow 595 Точки

Използвай двойните кавички за да въведеш стринга.Ясно е,че в задачите има грешки. Например в следващата 13-та да заменим whitespace с §nbsp; или въобще да го премахнем, както е в output-a? И там също се чупи входа от същия апостроф.

2
anton_cholakov avatar anton_cholakov 88 Точки

Да, тъкмо качих решенията си до 14-та. И на мен ми направи впечатление това за 13та задача, но ... определено съм прегрял.. толкова просто решение с двойните кавички, мерси. Време е за почивка явно :)

1
GoShow avatar GoShow 595 Точки
Да може би и на мен ми е време да си почина малко :) да оставим някоя и друга задача за утре :)
0
GoShow avatar GoShow 595 Точки

/[^a-zA-z]+/ нещо такова ти трябва за 14-та задача като регулярен израз, но при мен в края на масива изскочи едно духче, не съм проверявал с други изрази, затова при сплита си провери масива дали имаш последен празен елемент.

3
anton_cholakov avatar anton_cholakov 88 Точки

Да, имам. И причината е точката в края на изречението. Като я махна, това 'духче' го няма. Използвам .split(/\W+/)

1
DJZoning avatar DJZoning 85 Точки

И при мен се получава духче, аз използвам това: /\s|\./ като регулярен израз и разделям думите по празно място, и по точка, и явно между точката, и края или думата има такова празно стрингче, и се показва. palindromes е масива, в който сторвам палиндромите махнах го с palindromes.pop();

0
G.Burlakova avatar G.Burlakova 36 Точки

Здравейте!

И аз имах същия проблем с този празен елемент. Реших да потърся дали при JavaScript има RemoveEmptyEntries както при C#. Оказа се, че няма - или поне аз не открих. Попадна ми обаче нещо друго интересно. Тази функция всъщност маха от масива всичко, което подадем като параметри. И от задачата се получи това

3
DJZoning avatar DJZoning 85 Точки
6-та не е коректна, в условието пише: If there is more than one sequence with the same maximal length, print the rightmost one. И ако дадем примерно [ 1, 1, 1, 3, 3, 2, 2, 2 ] ще ни върне [ 1, 1, 1 ]
1
petrovaliev95 avatar petrovaliev95 358 Точки

Поне тази задача е една от правилно зададените :D. Уловката е там, че трябва да ресетваш countera на най-дългата поредица. Май не обясних много добре, но ако имаш въпроси потърси ме в facebook, ще ти обесня как става.

1
anton_cholakov avatar anton_cholakov 88 Точки

О, ами да, напълно си прав! Благодаря за коментара :) В проверката за текущата и най-дълга поредица трябва да има и равенство!

Намерих и още една неточност от моя страна: проверката за 2 съседни елемента от масива трябва да се извършва и по тип, а не само стойност, тоест "===" !

Решението е обновено! :)

0
petrovaliev95 avatar petrovaliev95 358 Точки

Браво! С цел не ти написах точно какво да провериш за да се сетиш сам!

0
GoShow avatar GoShow 595 Точки

Малко задачи и от мен, остават още 3 от задължителните и после малко със звездички. 3 решения и 4 загубени часа за 16-та, докато изпринтя точно по реда output- а ... Закоментирал съм и решението си с обекти или асоциативни масиви, само дето то си ги сортира само и... не е верен изхода като поредица. Ще ъпдейтна скоро и другите.

ЦъГ :)

 

5
bsdemon avatar bsdemon 348 Точки

Жоро, задачата 11, ще ти върне "correct", при : ') ( a + b ) ('. Може малко да се спори, дали е върно това или не.

1
GoShow avatar GoShow 595 Точки

Знам, обаче не ми се занимаваше с нея. Абсолютно си прав. Трябва да направя една проверка, ако първата срещана скоба е ')' да казва, че не е вярна, но просто не ми се занимаваше :)

0
Dominik avatar Dominik 82 Точки

Здравейте колеги,

 

Нещо много зациклих тук на 6 и 7 задача особенно на 7ма. Някой може ли да обясни тук ( или във фб/ на лично)

какво точно бъркам и даде някакви насоки :/ 

Ето докъде докарах код-а за 7ма http://pastebin.com/6Q5ZErWA . Работи само за 1вият тест.

А пък при 6та незнам как да принта най- дясната поредица ако има 2 или повече еднакви :(

Мерси предварително :)

0
anton_cholakov avatar anton_cholakov 88 Точки

Струва ми се, че проверката за start > bestStart трябва да е вътре в else statement-a. В моето решение в една промелива си пазя индекса, от който започва поредицата по този начин: indexOfLongest = i - currentSequence + 1;

Отделно трябва да имаш проверка за най-дългата редица дали е по-малка от две - в такъв случай да вадиш "no"

Погледни решението ми и ще видиш сам какво си пропуснал :)

А за шеста задача - преди малко си едитнах решението и добавих коментар - бях пропуснал именно това, за което питаш. 

В общи линии, на мястото където проверяваш дали текущата редица е по-голяма от най-дългата в момента, трябва да имаш и равенство, за да се "презапише" един вид :)

Дано съм го обяснил като хората :D Питай, ако не е станало ясно нещо :)

1
Dominik avatar Dominik 82 Точки

Здравей колега,

 

Много благодаря за насоките оправих го и сега е  на пушка :D

0
keller avatar keller 45 Точки

В момента решавам, на места със зацепвания, стигнал съм до 13та задача, ще ъпдейтвам преиодично всичко в гитхъб и ще кача демо като свърша.

Не знам дали е таква идеята на условието ( защото иска конзолно) но аз го правя всичко в 1 html файл с много input-и. Разликата е че слагам output-a да ми е някакъв параграф в документа, а не в конзолата.

Демо http://www.akj.softuni-friends.org/_00_TestBench.html

1
ttitto avatar ttitto 1154 Точки

От 5 часа дебъгвам проклетата осма задача и не мога да разбера какво се чупи и кое не е наред? МОЛЯ ЗА ПОМОЩ!

Ето го решението ми

връща ми резултат: 3 3 6 2 6 22 12 12 50 51 712, който не изглежда сортиран

0
Tr00peR avatar Tr00peR 569 Точки

Здравей колега,

Проблемът ти е в сортиращата функция, и по-точно в този ред: if (arr[i] < arr[i - 1])

Така проверяваш дали текущото число е по-малко от предходното, но това не значи, че е най-малкото от всички.

Може да пуснеш един вътрешен фор да проверява всички числа ако искаш. Или пък да направиш if (arr[i] < result[0]).

Аз лично използвах вградения метод Math.min.apply(Math, value), с който нещата стават далеч по-лесни :)

3
presian avatar presian 223 Точки

Аз имам едно питане. Трябва ли да се прави HTML, от който да се взима инпута. Аз правя само javascript-а с инпута от примерите? На последната лекция Наков така го обясни или поне аз така го разбрах.

3
Tr00peR avatar Tr00peR 569 Точки

Правилно си разбрал, колега - ХТМЛ-и не трябва да пишем, освен ако не са необходими за задачата.

3