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

[Exam Problems] JavaScript Basics - Примерни решения

Здравейте,
бях пуснал тема за решаването на задачи с JavaScript и получих добри насоки, след 1-2 опита вече нямах проблеми с вземането на инпута в системите за автоматизирано проверяване.
Преди курса по С# имаше доста теми с готови решения на задачи, които доста помогнаха на кандидатстващите и си мисля, че ще е добре да постваме тук решения на различни проблеми на JavaScript и така по-лесно да схванем особеностите на езика.

Надявам се също така да успокоя хората, които чакат примерните изпитни варианти и се чудят как да хванат инпута (като мен, вчера вечерта :) ) . Така, може би, ще имате повече време за практика.


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

JavaScript - 1 April 2013 - Morning 
                                                  - Joro the Naughty  - Solution
                                                  -  Sequences - Solution


C# Basics Exam 12 April 2014 Morning
                                                          - Triangles - Solution
                                                         - Pairs - Solution

Telerik Kids @ October 2013 - 5th grade - Sunday 
                                                                        - Bankomat - Solution
                                                                        - Shega - Solution
                                                                        - Sfetofar - Solution


Л
инк към списък с неща, които съм забелязал като особености, поне за мен бяха изненада Tips & Tricks

------------------------------------------------------------------------------------------------------------------------------------------------
Това са моите решения, споделете и вашите за да имаме пак високи резултати : ))


Тагове:
25
JavaScript Fundamentals
Valleri avatar Valleri 292 Точки

Позволявам си да си отговоря на мнението с едно нещо, което открих и веднага поствам тук.
Boxes in Boxes - From C# Basics Exam 28 April 2014

Порових из нета за форматирането и намерих много интересно снипетче, което има фукнционалността на c++`s "sprintf" - която бтв е 2000 реда код : )) иии ето я и функцията :

function sprintf(format, etc) {
        var arg = arguments;
        var i = 1;
        return format.replace(/%((%)|s|d)/g, function (m) { return m[2] || arg[i++] })
    }

alert(sprintf('Latitude: %s, Longitude: %s', 41.847, -87.661));

Попринцип в този си вид работи само ако ползваме %s, защото както виждаме в РЕГЕКСА имаме едно S-че. Ако добавим "d" ето така:

function sprintf(format, etc) {
        var arg = arguments;
        var i = 1;
        return format.replace(/%((%)|s|d)/g, function (m) { return m[2] || arg[i++] })
    }

 

 

Едит:
Току що видях, че същото може да се прави така: console.log("%s is %d years old.", "Bob", 42).

2
KostadinStefanov avatar KostadinStefanov 32 Точки

Да споделя една шукарийка вместо да въртиш цикъл и да парсваш input-а може да направиш:

function Solve(args) {

var input = args.map(Number)

}

5
Anita avatar Anita 360 Точки

Eто още един вариант на задачата Sequences  - Solution 

 

3
AlexKondov avatar AlexKondov 95 Точки

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

3
nikolay.dimov83 avatar nikolay.dimov83 142 Точки

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

1
lostm1nd avatar lostm1nd 121 Точки

Ето едно решение на Horsy

Като цяло условието гласи, че ти е дадена една матрица с посоки от 1 до 8. Всяка от тези 8 посоки придвижва коня две клетки в една посока и една клетка в друга - примерно 2 надясно и 1 надолу. Следвайки тези посоки трябва да обхождаш матрицата с точките. Когато излезеш извън матрицата или стъпиш в клетка, в която си бил връщаш резултат.

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

1
AlexKondov avatar AlexKondov 95 Точки

Аз Horsy все още не мога да я схвана.. Не решението или матриците, ами движението по редовете и колоните. Гледам първата схемичка и примерите долу и нещо ми се губи логиката.

Може ли някой да обясни как стоят нещата в стил "Explain like I'm 5"?

1
lostm1nd avatar lostm1nd 121 Точки

Ами ще пробвам отново:

1. На първия ред на входа е дадена големината на матрицата, която ще обхождаш (редове / колони).

2. На следващите редове са дадени числата за всеки ред от матрицата - ако имаш матрица 5х4 ще има 5 реда с по 4 цифри от 1 до 8. От тези цифри си пълниш матрицата.

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

4. Дадения пример гласи: ако си в клетка с цифрата 8 се мърдаш 2 клетки нагоре и 1 клетка наляво. После стъпваш на клетка с цифрата 6, гледаш коя посока отговаря на 6 (две наляво и една надолу) и се мърдаш в тази посока.

4
AlexKondov avatar AlexKondov 95 Точки

Благодаря много, изясниха ми се нещата. Не бях разбрал, че движението зависи от цифричката в настоящия елемент от матрицата.

1
AlexKondov avatar AlexKondov 95 Точки

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

1
Valleri avatar Valleri 292 Точки

Здравейте,
поствам 2 от 3-те задачи на състезанието JavaScript - 1 April 2013 - Evening

1. Max Sum

2. Labyrinth Escape - тази задача ми дава 90 процента. Причината е недостатъчно време. Ако имате идеи как да я оптимизирам, споделете.

3. TODO

2
Valleri avatar Valleri 292 Точки

Задачата Logs Aggregator - Solution
Т
ая задача е окей, но за Odd/Even Seq никога няма да намеря решение : (

Cognate Words

И една много полезна функция за премахване на неприятните празни елементи, които се появяват в масива след сплит, например.


var string = args[0].split(/[^0-9]+/);
string = string.filter(function (n) { return n != '' });

1
AlexKondov avatar AlexKondov 95 Точки

Функцията наистина е много полена. Относно Odd/Even, начина, по който аз я направих, е да проверя всичките числа от масива с for цикъл и нечетните да им присвоя стойност 1, а нечетните 2. Така си спестявам проверките дали е четен и пр. После го обхождам пак и проверявам дали предходния елемент е различен от настоящия. Единствено някъде трябва да се сложи if а 0-те.

Ще постна и решение малко по-късно.

2
Ventsislav avatar Ventsislav 343 Точки

Като допълнение за Logs Aggregator , ви давам код с коментари от Valleri : цък . Целта на тези коментари е да ви улесни да разберете как работи кодът.

3
KostadinStefanov avatar KostadinStefanov 32 Точки

string = string.filter(Boolean);

0
slavi.koen avatar slavi.koen 38 Точки

Здравейте на задачата Pairs , в VS ми изкарва верен отговор , а от джъджа ми изписва съвсем различен output

Expected output:
Yes, value=3

Your output:
Yes, value=1 2 0 3 4 -1undefined

Някой има ли идея , зашо така става ? Предполагам ,че входа ,по който се движа се различава с този в Judge-а.
0
Valleri avatar Valleri 292 Точки

Ще трябва да си постнеш кода и да видим.

0