Loading...

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

a.angelov avatar a.angelov 1316 Точки

[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 830 Точки

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

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

GitHub

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

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

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

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

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

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

0
velio84 avatar velio84 241 Точки

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

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

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

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

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

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

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

Анатоли, стана ми интересно на 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 1316 Точки

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

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

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

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

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

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

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

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

Открих една грешка в примерите на първата изпитна задача 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 830 Точки

Не е така, резултата трябва да е точно до 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 265 Точки

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

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

 

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

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

От задачите за домашно най-сложна ми се струва 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 333 Точки

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

0
Filkolev avatar Filkolev 4482 Точки

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

0
AleksandurSeferinkin avatar AleksandurSeferinkin 333 Точки

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

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

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

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

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