Loading...

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

zappabg avatar zappabg 2 Точки

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);

 

Тагове:
0
JavaScript Fundamentals
zappabg avatar zappabg 2 Точки

Най-накрая прогрес :D - 20/100

function addDays() {

    function formatDate(date) {
        let dd = date.getDate();
        let MM = date.getMonth() + 1;
        let yyyy = date.getFullYear();
        if (dd < 10) {
            dd = '0' + dd;
        }
        if (MM < 10) {
            MM = '0' + MM;
        }
        return dd + '-' + MM + '-' + yyyy;
    }

    let birthday = new Date('1995-02-25');
    return formatDate(new Date(birthday.setDate(birthday.getDate() + 1000)));
}

Борбата продължава :)

0
Stradjazz avatar Stradjazz 30 Точки

Мъча го от 4 дни и постът е отпреди няколко месеца, но... този код минава на 100/100

https://pastebin.com/aG22vJJt

function calculateDates([arg1]){
    let input = arg1;
    let inputArray = input.split('-');
    let dd = inputArray[0];
    let mm = inputArray[1];
    let yyyy = inputArray[2];
    
    let inputFormat = yyyy + "," + mm + "," + dd;
    
    let inputDate = new Date(inputFormat);
    
    let newDate = new Date(inputDate.setDate(inputDate.getDate() + 1000)); 
    dd = newDate.getDate();
    if(dd < 10){
        dd = "0" + dd;
    }
    mm = newDate.getMonth() + 1;
    if(mm < 10){
        mm = "0" + mm;
    }
    console.log(dd + "-" + mm + "-" + newDate.getFullYear());
}

calculateDates(["05-05-1995"]);

 

0
07/11/2019 18:48:08
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

не че нещо но защо по дяволите в js  ползвате var? Или не слушате какво ви се говори или така ви учат wtf

-4
Stradjazz avatar Stradjazz 30 Точки

защото навсякъде кода, който чета е с var, включително в StackOverflow и лекциите. Какво да използваме? let?

Много по-лесно ще е ако се даде някакво пояснение от типа на: в Джаваскрипт не се използва вар за променлива, защото..... Вместо това е препоръчителна употребата на.... защото......

Всичко останало е:

- Това не е така!

- Защо?

- Защото аз ти казвам!

- @№$€%@@!

По самото решение и задачата можеш ли да ми кажеш дали е ок? Дотук не видях голяма блъсканица с предложения как да се реши, освен оригиналният пост, който явно е имал проблеми

1
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

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 могат да се проверят тея неща.

-1
08/11/2019 15:32:35
willystyle avatar willystyle 2472 Точки

var има function scope, a ne global както си написал. Свери си знанията за 5 мин.

PS И понеже задачата ти се струва елементарна, малко ще ти я усложня, разгледай следното решение:

function calculateDates([birthDay]) {
    let days = 1000;
    let [dd, mm, yyyy] = birthDay.split('-');
    let date = new Date(`${yyyy}-${mm}-${dd}`);
    date.setDate(date.getDate() + days);
    let newDate = date.toISOString().split('T')[0];
    [yyyy, mm, dd] = newDate.split('-');
    console.log(`${dd}-${mm}-${yyyy}`);
}

то дава 40%, на половината тестове се разминава с един ден. От къде идва бъга и как да се фиксне? Фикса е 5 чара на точното място :)

2
09/11/2019 10:38:18
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

значи много обичам като ми говорят наизуист https://dev.to/sarah_chima/var-let-and-const--whats-the-difference-69e

да примем че не съм го изразил правилно преди кафето сутринта но случайно знам какво говоря. За съжаление ми се налага да се боря с js bulshit  в момента, колкото и да не ми се иска. И точно ей такива дето си пишат var навсякъде в 2000+ реда react  component  да забавно ....

-1
willystyle avatar willystyle 2472 Точки

За твое съжаление, няма да си върна думите назад. И преди и след кафето, спомена за две променливи декларирани с var в две различни функции, и това че това че двете променливи имали колизий, което е абсолютно невярно, те са в различен екзекюшън контекст и нямат нищо общо, просто функцийте в JS са кложъри.  Също така това, че let има блок скоуп не означава, че с него не можеш да декларираш глобална променлива. var се използвало над 20 години, let i const са от 4, та е почти нереално да не се сблъскаш с legacy code с var, да не говорим ако ползваш node.js. А в реакт, компонентите са създадени за да нямаш огромни блокове с код, твой избор е компонент с 2000 реда. Не че се заяждам, но демонстрираш някакви знания и се опитваш да научиш на нещо другите, но всъщност втълпяваш неверни неща. Но приказките са евтини, а решението на бъга в предния пример е:

function calculateDates([birthDay]) {

    let days = 1000;

    let [dd, mm, yyyy] = birthDay.split('-');

    let date = new Date(`${yyyy}-${mm}-${dd} 12:00`);

    date.setDate(date.getDate() + days);

    let newDate = date.toISOString().split('T')[0];

    [yyyy, mm, dd] = newDate.split('-');

    console.log(`${dd}-${mm}-${yyyy}`);

}

и е свързан с лятното и зимното време в различните времеви зони.

1
Stradjazz avatar Stradjazz 30 Точки

Разбирам, че варосването е старият начин на изписване по простата причина, че дори в MDN и W3Schools примерите са пълни с var променливи, при конзолни задачки на това ниво да се хванеш точно за това, когато проблемът е съвсем друг и като цяло работата с дата в JavaScript явно си има своите джъзъци, ми се струва чисто заяждане, особено имайки предвид правописа на български ;) Та... всички се учим в нещо, важното е да сме живи и здрави

2
10/11/2019 14:24:36
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

https://pastebin.com/Y0csNcYN a така ще разбереш ли най-накрая какво имах предвид.. Виж знам че js хората сте малко луди ама..

И честно видях повече js и уж модерен js  в последните 3 месеца отколкото искам в близките няколко години. Да си я взимат тая боза и айде да не казвма какво да я правят.Но ще издържа още няколко години докато web assembly  и blazzor са production ready.

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