1000 Days After Birth Защо решението не ми се зачита в Judge
Здравейте, това е всъщност първата програма, която пускам да се провери. Отне ми доста време, но накрая получих отговора. Решавах го дори в HTML вариант и само като JS.
Вход: 30-12-2002 Изход: 24-09-2005
Кодът ми е:
var birthday = new Date ("2002-12-30");
var bDay = birthday.getDate();
var bMonth = birthday.getMonth() + 1;
var bYear = birthday.getFullYear();
var myDate = "Birthday is on " + bDay +"-"+bMonth+"-"+bYear;
var newDate = new Date(birthday.setMilliseconds(999*24*60*60*1000));
var newDay = newDate.getDate();
if (newDay < 10){
newDay = "0" + newDay;
}
var newMonth = newDate.getMonth() +1 ;
if (newMonth < 10){
newMonth = "0" + newMonth;
}
var newYear = newDate.getFullYear();
newDays = "1000 days from birthday will be " + newDay+"-"+newMonth+"-"+newYear;
console.log(myDate);
console.log(newDays);
Мъча го от 4 дни и постът е отпреди няколко месеца, но... този код минава на 100/100
https://pastebin.com/aG22vJJt
не че нещо но защо по дяволите в js ползвате var? Или не слушате какво ви се говори или така ви учат wtf
защото навсякъде кода, който чета е с var, включително в StackOverflow и лекциите. Какво да използваме? let?
Много по-лесно ще е ако се даде някакво пояснение от типа на: в Джаваскрипт не се използва вар за променлива, защото..... Вместо това е препоръчителна употребата на.... защото......
Всичко останало е:
- Това не е така!
- Защо?
- Защото аз ти казвам!
- @№$€%@@!
По самото решение и задачата можеш ли да ми кажеш дали е ок? Дотук не видях голяма блъсканица с предложения как да се реши, освен оригиналният пост, който явно е имал проблеми
e тя тая задача е елементарна няма какво да коментирам кода, като за вашето ниво и като зa js e ok.
А защо не се ползва var трябваше първо с това да ви обеснят но накратко.
scope-a в js e коварно животно.
представи си че имаш 2 функции в един файл и 2те имат променлива var x.
това което ще стане че х в 2те ти фукнции е еднакъв и ще е този които се изпълни първи. Това е така защото var реферира global-ния state.
И да няма такива драми е есмаscript 6 хората въвеждат let и const.
ако имаш let x тази променлива ще живее само в scope-a на фукнцията в която е създадена. тоест 2те ти функции примерните ще си имат собствени х а не споделени.
А const е константа пак е вързана към локалния scope. Но готиното е че примерно твоето егн никога няма да го смениш и такива променливи който няма да сменяш им слагаш един const и си сигурен че никои никъде няма да може да ги промени.
Та това е, за 5 мин и една проверка в google могат да се проверят тея неща.
var има function scope, a ne global както си написал. Свери си знанията за 5 мин.
PS И понеже задачата ти се струва елементарна, малко ще ти я усложня, разгледай следното решение:
то дава 40%, на половината тестове се разминава с един ден. От къде идва бъга и как да се фиксне? Фикса е 5 чара на точното място :)
значи много обичам като ми говорят наизуист https://dev.to/sarah_chima/var-let-and-const--whats-the-difference-69e
да примем че не съм го изразил правилно преди кафето сутринта но случайно знам какво говоря. За съжаление ми се налага да се боря с js bulshit в момента, колкото и да не ми се иска. И точно ей такива дето си пишат var навсякъде в 2000+ реда react component да забавно ....
За твое съжаление, няма да си върна думите назад. И преди и след кафето, спомена за две променливи декларирани с var в две различни функции, и това че това че двете променливи имали колизий, което е абсолютно невярно, те са в различен екзекюшън контекст и нямат нищо общо, просто функцийте в JS са кложъри. Също така това, че let има блок скоуп не означава, че с него не можеш да декларираш глобална променлива. var се използвало над 20 години, let i const са от 4, та е почти нереално да не се сблъскаш с legacy code с var, да не говорим ако ползваш node.js. А в реакт, компонентите са създадени за да нямаш огромни блокове с код, твой избор е компонент с 2000 реда. Не че се заяждам, но демонстрираш някакви знания и се опитваш да научиш на нещо другите, но всъщност втълпяваш неверни неща. Но приказките са евтини, а решението на бъга в предния пример е:
и е свързан с лятното и зимното време в различните времеви зони.
Разбирам, че варосването е старият начин на изписване по простата причина, че дори в MDN и W3Schools примерите са пълни с var променливи, при конзолни задачки на това ниво да се хванеш точно за това, когато проблемът е съвсем друг и като цяло работата с дата в JavaScript явно си има своите джъзъци, ми се струва чисто заяждане, особено имайки предвид правописа на български ;) Та... всички се учим в нещо, важното е да сме живи и здрави
https://pastebin.com/Y0csNcYN a така ще разбереш ли най-накрая какво имах предвид.. Виж знам че js хората сте малко луди ама..
И честно видях повече js и уж модерен js в последните 3 месеца отколкото искам в близките няколко години. Да си я взимат тая боза и айде да не казвма какво да я правят.Но ще издържа още няколко години докато web assembly и blazzor са production ready.