Loading...
Valleri avatar Valleri 304 Точки

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

Позволявам си да си отговоря на мнението с едно нещо, което открих и веднага поствам тук.
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 91 Точки

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

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

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

1
lostm1nd avatar lostm1nd 121 Точки

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

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

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

1
AlexKondov avatar AlexKondov 91 Точки

Аз 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 91 Точки

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

1
AlexKondov avatar AlexKondov 91 Точки

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

1
Valleri avatar Valleri 304 Точки

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

1. Max Sum

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

3. TODO

2
Valleri avatar Valleri 304 Точки

Задачата 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 91 Точки

Функцията наистина е много полена. Относно 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 304 Точки

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

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