Важни подготвителни неща за изпита


31

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

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

1. Да си направя три .js файла със следните templates:

function solve(input) {

    var len = input.length;

}

var test1 = [];

var test2 = [];

console.log(solve(test1));

console.log('-------------------------') // за да са ми отделени решенията на два теста 

console.log(solve(test2));

2. При задачите със стрингове е хубаво да се прави trim() колкото е възможно по-често или още в началото един цял replace на всички multiwhite-spaces с един:

string = string.replace(/  +/g, ' ');

3. Превръщане на стрингово число в number число: '21' * 1 = 21;

4. Да се внимава, ако в задачата има няколко for цикъла, да се използва i, j , k, m... да не се използва повторно i примерно, че може да стане мазало от горния for цикъл :)

5. Да се внимава и със търсенето на мин и макс. На първоначалните стойности да се присвояват +Infinity и -Infinity, че MIN_VALUE и MAX_VALUE не са типичните мин и макс валюта :) (виж. лекциите).

6. При обхождане на матрица, и ако се опитаме да вземем matrix[i+1][j+1], ако i+1 не съществъва (i + 1 === undefined), то ще гръмне, и аз лично съм се чудил 5 часа защо гърми :) изводът е първо да се провери дали i+1 съществува :)

7. Да се избягват Math... blah blah blah.. че са много бавни и може bgcoder да гръмне за време. Има си алтернативи. Math.floor == 22.3 | 1 (22). Math.pow == един for цикъл.

8. При стринговите задачи да се ползва автомат (символ по символ да се гледа и да се правят 15 хиляди if). (Задачите със стрингове могат и да се решават с парсване, но може да стане голямо мазало там) (Надявам се трейнърите да се смилят и да дадат малко по-не толкова завъртяни задачи, и да могат да се решават на части, примерно).

9. И може би най-важното за мен: да се проверява почти всеки ред дали ти изкарва това, което ти искаш, чрез проверяване с различни примери. Step by step :)

10. <good></luck>

п.п. ако някой иска и се сети нещо друго да сподели :)




Отговори



1

Добавям и функция Contains с възможност за начало и край,еквивалентна на метода Contains() в c#, понякога е доста полезна :

function contains(arr, value, start, end) { var i, start = start || 0, end = end || arr.length; for (i = start; i < end; i++) { if (arr[i] === value) { return true; } } return false; }


от IvayloAndonov (1994 точки)


3

function solve(params){

    console.log(params);

}

Ми връща в 'Your output: ' на нулевия тест инпута перфектен за тестове (със всичките му запетайки и кавички). Много е удобно за третите задачи, където инпута може да е доста дълъг и мен примерно ме мързи да го обработвам с макроси. Е, ако имате по-читаво  IDE може и да не ви се налага да правите такива глупости, но споделям, тъй като за мен е най-бързият вариант, а времето за изпита не е много :)

Успех!




1

от heruelda (894 точки)


1
Да излиза за хората, които са утре.

Моя личен съвет е - пишете си коментари по кода. Така вие самите ще се ориентирате по-лесно!!!!

от mr.krustevv (302 точки)


1
има и друг начин без коментари- използваш описателни имена за променливите и функций,като ги измисляш така,все едно друг ще ти го чете и на него да му стане ясно,слагаш имена 1:1 със действието за което е предназначена променливата/функцията.Примерно ако броиш елементи,ще кръстиш променливата- countElements, а не count или counter или нещо друго,защото при повече редове код се бъркаш.Повярвай ми,после не ти трябват коментари.

от Pavel.Aslanov (428 точки)


0
Може да обърнете внимание на тази тема. Изпита е далечко, но пък и времето се изплъзва бързо хихи.. Също може да погледнете и тук ;)

от Nayata (3190 точки)