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
Ivaylo.Il avatar Ivaylo.Il 226 Точки

Помощ за 7ма. Докарал съм го до някъде, но винаги ми пропуска 1вото число от последователността. 

 

http://pastebin.com/PWap1PGW

 

Моля и за обяснение на 8ма задача. Реших я по примера на наков от лекцията и с пример от стаковърфлоу, но не разбирам как просто някъв ретър а-б ми сортира целия масив :/ 

http://pastebin.com/26tSx1Db

0
ZvetanIG avatar ZvetanIG 907 Точки

Дълго се мъчих над твоето решение на  7 задача и това което ми се стори не както трябва е следното:

1. Когато цикъла стигне до края на нарастващата поредицата, задачата отива в else и по този начин се изпуска последното число от елемента.

2. До вторият if  където сравняваш дължините на двата масива никога не стига tempArray с цялата поредица, защото на последния елемент той се изпразва.

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

 

В 8 задача се иска да напишем "selection sort" алгоритъм, а не да използваме array.sort.

0
Valleri avatar Valleri 304 Точки

1. Number Checker

2. Find Max and Min

3. Properties - за тази задача ми помогна решението на Антон

4. Create Array

5. Compare Chars

6. Maximal Sequence Of Equal - и 20 пъти да я направя тази задача пак ще ми трябва половин час : ))

7. Maximum Sequence Of Increasing Elements - същата история като предната

8. Selection Sort - сам я писах по описанието, може да не е мн красиво написано :Р

9. Most Frequent Number

10. Reverse String

11. Check For Brackets

12. Substring Count

13. Replace Whitespace

14. Palindromes

15. Most Frequent Word - тук се раздадох на макс

16. Cards Frequencies

17. Replace Anchor Tag - малко селско решение, но върши работа...поне за това изречение...

18. Content Extracter 

19. Text Modifier - Благодарение на решението на Антон и ZvetanIG, който му е помогнал :)

Над последната задача разсъждавах много, имах масив с думите, но нямаше как да ги заместя в цикъл защото стринга не може да се променя....след това даже в цикъл бях направил функция към края на която да се добавя код за всеки елемент от масива. Ето го : http://pastebin.com/78MFjQb1

Е добре как става това, че правите функция с един аргумент и след това я вкарвате като втори аргумент на "replace", но вече без аргументи и тя успява да вземе match и да го обработи и да замести....... foot-in-mouth undecided


1
yavor2000 avatar yavor2000 114 Точки

Здравей,
в решението ти на 7-ма задача

for (var i = 0; i < arr.length; i++) {
if (arr[i] < arr[i + 1]) ...

arr[i + 1] в други езици това ще даде exception out of boundaries error, и въпреки че е позволено в javascript, ако на това място в паметта има стойност > arr[i] програматаи ще даде грешен отговор - мисля че това е лоша практика.

2
garbuchev avatar garbuchev 18 Точки

Аз имам един въпрос/коментар за 11. Check the Brackets, който ще сложи звездички на тая задача.
Всички традиционно проверяват, дали броя отворени скоби са затворени. Не видях някой да проверява символите преди и след скобите. Това, което имам предвид е, че преди '(' може да има знак: '+', '-', '*', '/', или скоба'(', а преди ')' трябва да има буква, число или ')'. Може и да пропускам нещо. След скобите също има определени изисквания.
Та това не успявам да го измисля съвсем как трябва да се случи. Ако някой го направи, моля да сподели идеи.

0
nickpanaiotov avatar nickpanaiotov 21 Точки

Иска се в задачата да проверим скобите проверяваме ги. Ако трябва да проверим за валиден израз вече става грубо. Reverse polish notation и shutting yard algorithm, което си е меко казано групо по скоро е wtf. Ведннъж гледах как Ивайло Кенов го решава после плаках в тъмното ;D

0
Karlie avatar Karlie 438 Точки

Колеги, на 12-та задача няма ли начин да се ескейпнат тези апострофи във входа някак, виждам, че масово сменяте единичния апостроф с двоен във входа, но това според мен си е нагласяне и не отговаря на заданието.

1
anton_cholakov avatar anton_cholakov 88 Точки

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

Сигурен съм, обаче, че тези неща ще са съобразени на изпита

 

0
milen_vm avatar milen_vm 68 Точки

Аз съм сложил наклонена черта \ преди апострофа в инпута и при мен се ескейпва.

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

0
Karlie avatar Karlie 438 Точки

Милен, то и аз така направих, нo при нормална употреба на програмат, а не с hardcode вход (примерно на изпита - judge-a като ти пусне тестовете), няма как да им сложиш /n.  Питането ми беше за някакъв метод автоматично да си форматираш входа, преди да работиш с него, но и аз, като Антон по-горе не мога да си го представя как ще стане.

0
Masovski avatar Masovski 211 Точки

Hello World. А сега и домашното - цък.

1
YaneYo avatar YaneYo 40 Точки

Колега, имаш грешка на четвърта задача. В условието се иска да се умножава индексът на всеки елемент в масива, а ти умножаваш стойността на всеки елемент в масива.

1
Masovski avatar Masovski 211 Точки

Ахаа, вярно! Странно как съм я прочел. :) Сега ще я оправя.

 

Edit: Готово. Друго, което пише е, че трябва да се allocate-не масива, а аз не бях направил и това. Бях я направил тотално грешно. Благодаря за корекцията. : )

0
morsky avatar morsky 29 Точки

Здравейте колеги, ето какво сътворих и аз smile

 

 1. Number CheckerJS

 2. Find Min and Max NumberJS + JS ver2

 3. Properties: JS

 4. Create ArrayJS

 5. Compare CharsJS

 6. Maximal SequenceJS

 7. Maximal Increasing SequenceJS

 8. Sort Array: JS

 9. Most Frequent NumberJS

10. Reverse String: JS

11. Check the BracketsJS

12. Substring CountJS

13. Replace the White-Spaces: JS

14. PalindromesJS

15. Most Frequent WordJS

16. Cards FrequencesJS

17. Extract Element Content: JS

18. Replace A TagsJS

19. Text ModifierJS - добре се получи laughing

 

4
DanteSparda avatar DanteSparda 32 Точки

Хора, защо на 7 задача когато дам да намери дали няма нарастваща ми зацикля ? От вчера го мъча и просто не ми идва наум.
Съжелявам за raw-paste-a

function findMaxSequence(value){
    var longestSeq=0;
    var currSeq = 1;
    var result = [];
    var index = 0;
    var change = 0;

    if (value.length<2){
        console.log(value);
        return;
    }
    for(var i=1;i<=value.length;i++){
       var first = value[i-1];
        var second = value[i];

        if(first<second){
            currSeq++
        }
        else{
            if(currSeq>=longestSeq){
               longestSeq = currSeq;
                currSeq=1;
                index = i-longestSeq;
            }
        }
    }

    for(i=1;i<=value.length;i++){
        change = 1;
        var first = value[i-1];
        var second = value[i];
        if(first<second){
            currSeq++
        }
        else{
            currSeq=1;
        }
        if(currSeq==longestSeq){
            for(i=0; i<longestSeq; i++){
                result.push(value[index])
                index++
            }
        }
    }
    if (change !== 1){
        console.log('no')
        return;
    }


    console.log(result);
    return;

}

findMaxSequence([2,1]);

0
XmUrF avatar XmUrF 363 Точки

Най-вече вторият ти цикъл прави проблеми. По принцип и двата цикъла, понеже си ги направил i <= value.length, те излизат извън дължината на масива и second ти става undefined по някое време :). Отделно във втория цикъл тоя index++ също по някое време излиза извън дължината на масива, става undefined и съответно почва да ти пълни result с undefined стойности.

Не знам, много странно поведение има тоя алгоритъм. В началото като го тествах работеше с поединичните примерни, сега работи коректно даже с първите два. Само че ти никога не стигаш до варианта "no", тъй като във втория цикъл change го правиш на 1, съответно няма как да ти даде no, ама продължава да ти пълни result с някакви стойности.

Според мен си препработи изцяло втория цикъл. Честно казано той даже е безсмислен. След като имаш най-дългата поредица и индекса, от който почва, единственото което трябва да направиш е да пушваш в result от индекса поредицата, колкото ти е longestSequence.

 

for (i = 0; i < longestSeq; i++) {
        result.push(value[index]);
        index++;

    }

    if (longestSeq == 1) {
        console.log('no');
    } else {
        console.log(result);
    }

 

Ето това ако го сложиш вместо втората част на твоята функция, ще работи, поне с примерите от домашното :).

1
DanteSparda avatar DanteSparda 32 Точки

Леле от толкова преработка сам съм го преебал :D и се чудя що не става.. Мерси много !

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