[Homework] JavaScript Basics - Loops-Arrays-Strings - November 2014 - Софтуерен университет

[Homework] JavaScript Basics - Loops-Arrays-Strings - November 2014 - Софтуерен университет

+ Нов въпрос
a.angelov avatar a.angelov 1332 Точки

[Homework] JavaScript Basics - Loops-Arrays-Strings - November 2014

Мина и третата лекция от курса /малко съм се объркал - днес ще мине foot-in-mouth /. Ето моите решения на задачите от домашното:

GitHub

Коментарите по кода са добре дошли :)

ПС. Решени са вече всички задачи. За трета задача от изпитните си помогнах за алгоритъма с този авторското решение... Често се усещам, че решавам задачите по много по-сложен начин от колкото могат да се решат и това ми коства доста време и усилия. Така стана и с тази задача и се наложи да погледна авторското решение. :)

4
JavaScript Fundamentals 12/11/2014 10:53:16
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

Кога е минала третата лекция от курса? 

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

GitHub

3
a.angelov avatar a.angelov 1332 Точки

Опа, тя вярно трябва да е днес..., нещо съм се заблудил smile

0
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

На 2 от задачите има грешки или пък не е достатъчно ясно условието: 

На 4-та примерно в output-a са дадени 21 числа, а не 20 както е по условие.

На 7-ма задача не е казано ако има повече от една увеличаваща се поредица с максимална дъжлина то коя да принтираме - първата срещната или последната. 

0
velio84 avatar velio84 241 Точки

Ето ги и моите решения до 16 задача

на 16 в първия пример нещо не ми работи .toFixed(2) и не изписва .00 след числото.

Ако някой има идея защо е така, ще се радвам да сподели :)

Когато числото не е цяло си работи нормално и закръгля до втория знак.

2
a.angelov avatar a.angelov 1332 Точки

Защото си сложил %d като placeholder - сложи го %f и ще работи. :)

console.log("%s -> %f%", cards[i], freq.toFixed(2));
2
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

Анатоли, стана ми интересно на 16-та задача в кода ти какво прави 

var faces = tempFaces.filter(function(v){return v!==''});

Явно го ползваш за да направиш нов масив от tempFaces, но като махнеш празните елементи. Има и друг начин да се махнат празните елементи чрез .filter(Boolean)

така още на предния ред може да го промениш на

var faces = str.split(/\W+/g).filter(Boolean); 

1
a.angelov avatar a.angelov 1332 Точки

Да, точно за да махна празните елементи го ползвам. Такъв вариант намерих и понеже беше кратичък него ползвам :)

filter.(Boolean) не го бях видял, но мисля, че с него трябва да се внимава /не за конкретната задача, а по принцип/, защото може да премахне някои елемнти, които се интерпретират като false, а не искаме да ги махнем - например числото 0.

0
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

Да, когато 0 е като число filter(Boolean) ще го премахне. В конкретната задача след като входа е string няма проблем да се използва.

0
a.angelov avatar a.angelov 1332 Точки

Да, затова съм уточнил: /не за конкретната задача, а по принцип/ :)

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

0
a.angelov avatar a.angelov 1332 Точки

Открих една грешка в примерите на първата изпитна задача Rakiya Numbers:

<li><span class='rakiya'>11211</span><a href="view.php?id=11211">View</a></li>

Кавичката която съм оцветил в червено не трябва да я има иначе задачата гърми.

0
11/11/2014 18:42:26
nikshi avatar nikshi 45 Точки

На Задача 4 и двамата сте сложили условие в цикъла  i < arr.length, което от своя страна води до не пълен резултат (до 95).  За да се стигне до 100, както е по условие трябва да е  i <= arr.length, но пък тогава влиза в безраен цикъл, което не мога да си го обясня, защо става така. Ако искате го пробвайте и ако имате някакво обяснение ще се радвам да го споделите :)

0
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

Не е така, резултата трябва да е точно до 95. Примера в домашното е сгрешен. Там се казва, че трябва да се създаде масив с 20 елемента. Следователно този масив има index-и от 0 до 19. Самите елементи трябва да ги напълниш със стойности index * 5 => 19 * 5 = 95. Обърни внимание, че в примера от условието има 21 елемента, а не 20.

0
nikshi avatar nikshi 45 Точки

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

0
salih1f1 avatar salih1f1 188 Точки

Здравейте колеги. Споделям скромното си домашно с вас. Ще се радвам на градивна критика. 

GitHub

1
VenelinGrozev avatar VenelinGrozev 130 Точки

В 15-та задача имаш една променлива maxVelue. И така си работи но е правилно да се напише maxValue.

В 14-та задача каква ти е идеята да ползваш този regex -  str.split(/[ .,]+/);? Може да разделиш стринга направо на думи с str.match(/\w+/g); и да си спестиш допълнителните обработки.

В 11-та задача ми се струва, че правиш нещата по по-трудният начин. Трябва да се провери дали скобите са поставени правилно. Пробвай да изолираш само скобите в стринга и после да преброиш дали са равен брой десните и левите. Трябва да провериш и дали израза не почва с дясна скоба (какъвто е вторият input string).

0
13/11/2014 08:18:27
salih1f1 avatar salih1f1 188 Точки

За 11-та задача, проверявам още в началото дали не започва с дясна скоба. По удачно ми се стори да работя с масив. 

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

15-та задача лека правописна грешка, ще я оправя при първа възможност :).

0
VenelinGrozev avatar VenelinGrozev 130 Точки

Някой ще ми помогне ли да разбера условието на 13-та задача?

Иска се да заменим the white-space characters в текста с &nbsp entity и да изпечатаме резултата в конзолата.

&nbsp entity е интервал - т.е. иска се да заменим интервал с интервал. Което е по-странно поне за мен е, че резултатът от решението дадено в условието е стринг без интервали в него:

Butyouwerelivinginanotherworldtryin'togetyourmessagethrough

Защо след като трябва да заменим интервал с интервал в крайният резултат няма интервали?

------------------

Добавям и моите решения до момента - JavaScript-Loops-Arrays-Strings

Засега са до 17-та задача, вечерта се надявам да реша и останалите.

0
13/11/2014 07:58:44
salih1f1 avatar salih1f1 188 Точки

Здравей. &nbsp е non-breaking space т.е. да няма никъкво пространство. Това е моето решение. Просто замених ' ' със '', с помощта на регулярен израз и се получи. Поне аз така го разбрах.

0
12/11/2014 23:00:32
VenelinGrozev avatar VenelinGrozev 130 Точки

Ами аз погледнах решенията на останалите и всички са го направили по този начин. Просто се замислих заради това, което пише в w3schools за това ентити:

Non Breaking Space

A common character entity used in HTML is the non breaking space (&nbsp;).

Remember that browsers will always truncate spaces in HTML pages. If you write 10 spaces in your text, the browser will remove 9 of them. To add real spaces to your text, you can use the &nbsp; character entity.

 

Т.е. &nbsp; в прозореца на браузъра се изобразява като интервал. Каква е логиката тогава да се замества с празен стринг в конзолата?

1
13/11/2014 00:09:01
verito898 avatar verito898 SoftUni Team 290 Точки

Това са моите решения . Общо взето най-много се повъртях около последната задача Card Frequencies , но пък мисля решението стана сравнително кратичко ...И аз приемам всякакви критики по задачките . 

Пс: само 3та задача ми е малко неясна и ще се радвам ако някой успее да обясни решението си . 

 

1
13/11/2014 14:35:51
Filkolev avatar Filkolev 4425 Точки

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

От задачите за домашно най-сложна ми се струва 11-та, защото има доста неща за съобразяване. Дори тези със звезда са по-лесни, защото там се искат по-конкретни неща.

Ще пробвам днес да направя 11-та. Разписал съм си критерии какво означава скобите да са коректни, което всъщност означава до голяма степен да проверя дали самият израз е коректен (поне отчасти). На английски го направих, не знам защо. Кажете ако се сещате още нещо, което да бъде сложено като условие.

Ето условията, които съм си записал за момента:

1. Total number of opening brackets equals total number of closing brackets
2. Start with opening bracket
3. A certain number of opening brackets is followed by the same number of closing brackets, then by an opening bracket again
4. There is a variable/closing bracket and whitespace before closing brackets
5. There is a whitespace and a variable/opening bracket after an opening bracket
6. There is a whitespace + mathematical operator or end of input after a closing bracket
7. There is the start of input, an opening bracket or mathematical operator before an opening bracket

0
AleksandurSeferinkin avatar AleksandurSeferinkin 335 Точки

Не е ли по-хитро да заместиш всички букви в input-a със числа, след това да го пуснеш с eval и да провериш дали връща число?

0
Filkolev avatar Filkolev 4425 Точки

Точно за това се сетихме днес с един колега и така ще го направя :)

0
AleksandurSeferinkin avatar AleksandurSeferinkin 335 Точки

Моите решения

Задачите са сравнително лесни. И аз забелязах някои проблеми в условията. Това с non breaking space не го разбрах, но успях да постигна същия резултат, даден в условието

0
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

На 14-та задача може да чистиш празните елементи в масива още при създаването му чрез .filter(function(v){return v!==''}) (споделено от a.angelov)

0