Loading...
Zdravko93 avatar Zdravko93 33 Точки

[Useful Info] JavaScript - особености на езика / Judge системата

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

Искам да предопредя всички които ще се явяват на JavaScript изпита да внимават кога и къде слагат точка и запетая. Аз съм много стриктен по тези неща и навсякъде слагах точка и запетая,докато не разбрах че Judge не го приема толкова добре. Както сигурно някои от вас знаят в Judge, когато сложиш накрая на функцията точка и запетая "Function solve () {};" дори задачата да ти е вярна ти дава 0/100 . Та просто функцията не трябва да е с затваряща точка и запетая накрая за да ти я прочете както трябва системата.
Пиша тази тема за да помогна на такива като мен, които сигурно са се бъхтили много време над този проблем и все още се чудят как и защо?!
Успех на изпита !

Променям темата по предложението на колегата, вижда ми се добре решение да се поразшири.
Пишете в тази тема неща за JavaScript, които са ви учудили, странности на езика и т.н. 

Тагове:
5
JavaScript Fundamentals 03/04/2015 10:49:50
anikov avatar anikov 40 Точки
Best Answer

Сигурен съм, че е обсъждано но мисля, че е подходящо за темата. Внимавайте с toFixed(), стойността която се връща е от тип string. В суматохата от изпита лесно може да се забрави, което ще доведе до доста главоболия впоследствие. laughing

3
iliangrekov avatar iliangrekov 63 Точки

За да преобразуваме число от вида 5.500006 или 5.5500003 към число без допълнителни нули до втория знак видях следния подход:

Number((parseFloat('5.500006')).toFixed(2))  //5.5
Number((parseFloat('5.5500003')).toFixed(2))  //5.55

2
02/04/2015 13:25:10
enevlogiev avatar enevlogiev 1168 Точки

Не е ли достатъчно parseFloat(някакъв стринг), вместо Number(parseFloat()) ?

0
iliangrekov avatar iliangrekov 63 Точки

Не съм се исказал правилно може би. Ако в началото имаш число като стринг -   '5.50005' няма как да му кажеш toFixed(2) защото не е от тип number. За това го парсваш към float - става на число и му викаш toFixed(2), което обаче връща пак стринг, който ще е '5.50', а ние искаме да няма нули отзар и го кастваме към number като получаваме 5.5, ако беше '5.450004' ще получим 5.45 

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

Не само в джъдж, а по принцип не трябва да слагаш точка и запетая след къдравите скоби на функция, освен ако функцията не се присвоява на променлива - тогава се слага:

Т.е.: var a = function () {};

Ето малко полезна информация за това къде трябва да се слага точка и запетая и къде не:

http://www.codecademy.com/blog/78-your-guide-to-semicolons-in-javascript

5
Zdravko93 avatar Zdravko93 33 Точки

Благодаря за отговора - Стана ми ясно, но все пак нека да го видят хората, защото 100% не съм единствения който слага точка и запетая навсякъде :D

2
zh.stoqnov avatar zh.stoqnov 103 Точки

Като цяло темата със сигурност би била много полезна (ако се поразшири малко), в случай че някой се натъкне на други подобни специфични за Judge системата или дори за JavaScript като цяло странности.

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

Макар вече да е обсъждано винаги парсвайте към число входните данни, които ще ги използвате за начало и край на for цикъл.

2
Yulia avatar Yulia 1346 Точки

Zdravko93, ако използваш JShint или JSLint докато пишеш кода си в редактора/IDE-то, няма да имаш тези проблеми и много бързо ще свикнеш къде се слага точка и запетая, къде не. Има ги като plugin-и както за Sublime, така и за WebStorm/VisualStudio и т.н

JSLint е по-строг, иначе те съветват и се карат ако пишеш глупости като цяло (използвай и 'use strict'; винаги!)

Полезни tool-ове са  :) Споменават се не веднъж на лекциите, но аз да се възползвам от темата, за да напомня отново на всички xD На мен по-принцип са ми включени и като отворя чужд код - направо гори от warning-и и това не е никак приятно. Това е като да получиш служебен имейл пълен с правописни грешки. Ако ти самият си свикнал да пишеш правилно, ще забележиш това и без tool-овете, но те помагат за изграждането на този навик.

Особено препоръчително е да се използва от хората, които съставят задачите за изпити по JavaScript, защото ми се е случвало на изпит да отворя кода, който трябва да дописвам - и да го редактирам, за да се придържа към style guide-а и да има точки и запетайки на правилните места.

Заслужава си да си отделите от времето, за да ги добавите в редактора си и конфигурирате. Правилната среда, правилните примери и като цяло гледането на хубав и качествен код - водят поне косвено до писането на такъв. Това не се учи в курса по КПК, това е навик, който се изработва от самото начало, от първото hello world.

8
02/04/2015 00:45:19
GeorgiRGeorgiev avatar GeorgiRGeorgiev 2 Точки

Подкрепям !

И аз също съм добавил тези добавки и ги използвам. Като често ми показват къде греша някъде, като оцветят например в жълто или червено грешките ми, след, което ги поправям и програмата тръгва коректно. Като най-често съм забелязал, че греша на кои места трябва да сложа точка и запетая и на кои не трябва да слагам.

0
02/04/2015 00:47:33
iliangrekov avatar iliangrekov 63 Точки

Здравейте, искам да споделя нещо, което като цяло се случва и на други изпити в различна степен. 
Става дума за изпита от 24 ноември задача 4.  Judge ми дава 85 точки, защото нещо не му харесва на тест 7. Логиката ми е такава, че няма как да има разлика при тест 7. Проверих теста към задачата с очаквания output като го сравних с моя output на конзолата в diff checker online, да не кажете, че аз не съм видял нещо. Резултата е, че са напълно еднакви.  Хайде сега кажете ми защо ми дава 85 точки? 

ПС Сега го прави на тест 1. Резултата пак е същия. Ако и на изпита ще ги прави тези номера, няма да е добре, защото ще си мислиш, че бъркаш някъде и няма как да разбереш къде.

0
03/04/2015 16:20:50
Filkolev avatar Filkolev 4482 Точки

Твоят изход на конзолата не е сигурен, гледал ли си в браузър какво изкарва при този тест? Дай код да видим какво може да не е наред. В 99% от случаите грешката не е в Judge системата. 

0
iliangrekov avatar iliangrekov 63 Точки

Да от това е било, оказа, че сорт функцията дава различен резултат в много специфична ситуация, а на конзолата няма разлика. Оправих го с localeCompare. 

0
Filkolev avatar Filkolev 4482 Точки

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

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