Loading...
brslv avatar brslv 69 Точки

[Exam Problems] PHP - Problem {2} - Future Dates

Здравейте!

Имам проблем с втора задача от този изпит.

Проблемът е от типа "judge, ти нормален ли си?!". Кофтито на тези проблеми е, че въпросът в последствие се обръща към неговия автор, но както и да е. : ))

Идеята е, че получавам отговори, които са идентични с очакваните (след 3-4 опит с judge, не издържах и си изтеглих тестовете). Но системата ми дава 12 точки, а всичко останало е Runtime греди.

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

Ще се радвам на малко странична помощ.

Ето моя код.

http://pastebin.com/McTBkvWG

Мерси!

Тагове:
1
PHP Web Development Basics
Filkolev avatar Filkolev 4482 Точки
Best Answer

PHP е език, който се изпълнява на отдалечен сървър, което води до нуждата когато се работи с дати да се сетва времева зона. Ако не сетнеш такава, получаваш warning, който Judge приема за Runtime error.

Би трябвало в самото описание на грешката да има нещо от рода на "It is not safe to rely on the system's timezone..."

Решението е да ползваш date_default_timezone_set('[zone]'), като за зона може да сложиш която решиш (например UTC), важното е просто да я сетнеш преди да почнеш да създаваш обекти от тип дата.

2
13/04/2015 13:48:50
brslv avatar brslv 69 Точки

Благодаря, Fil. Стана. Знаех си, че е нещо too lame.

Иначе тъпото е, че Runtime грешката ми идваше кофти форматирана:

Uncaught exception 'Exception' with message 'D...
0
Filkolev avatar Filkolev 4482 Точки

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

2
brslv avatar brslv 69 Точки

Супер!

0
VyaraG avatar VyaraG 45 Точки

Здравейте :))

 

И пак за тази задача, ето още едно решение (опит). Дава ми 50 в джъджа, като нулевите минават и не мога да разбера къде е грешката.  FutureDates

Ако някой има минутка да погледне, благодаря! :))

0
01/05/2015 10:56:38
Filkolev avatar Filkolev 4482 Точки

Линка ти е грешен, препраща към решението на колегата по-горе :)

0
VyaraG avatar VyaraG 45 Точки

Хаха, явно като съм гледала къде е пропуснал нещо той, и съм обърала. Сега е правилен :))

0
Filkolev avatar Filkolev 4482 Точки

Трябва да полазваш DateTime класа. Забележи, че не ти е казано в какъв диапазон са датите. Стандартните функции като strtotime работят коректно само в периода 1900-2038 (там някъде). 

Ето тук има показани два подхода за създаване на такъв обект: https://php.net/manual/en/datetime.construct.php

1
GeorgiRGeorgiev avatar GeorgiRGeorgiev 2 Точки

Здравейте!


Да имате идея защо на тази задача ("Future Dates") в локалният ми хост на компютъра ми отпечатва верни резултати от тестовете, а в judge ми отпечатва съвсем различни резултати и почти всички тестове ми ги маркира като грешни (дава ми 25 от 100 точки)?

Това е кодът ми: 

http://pastebin.com/F8DK7TX9

 

 

0
06/05/2015 17:26:02
Filkolev avatar Filkolev 4482 Точки

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

1
GeorgiRGeorgiev avatar GeorgiRGeorgiev 2 Точки

Прав си, така е.
Сега пробвах и друг "regex" и отново ми вади различни резултати. В първият тест си проличава, че ми вади един изход в "judge", а на мен в локалният хост ми вади различен изход.

Пробвах с "regex-a" в този код:

http://pastebin.com/Z233FXHt

0
Filkolev avatar Filkolev 4482 Точки

Грешката ти е доста нелепа :) Погледни как достъпваш numbersString, имаш един излишен спейс накрая. Махнах го и даде 100.

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