Loading...
jabalka avatar jabalka 960 Точки

[Exam] PHP Basics - 29 август, 31 август 2014 - решения, впечатления, резултати

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

И? Как мина изпитът за вас?

Тъкмо свършихме последния изпит - голяма забава - много интересни задачки. 

Първа и трета от раз. Четвърта - супер забавна и приятна, забавлявах се с обекти, но не изкарах 100.

Втора - без коментар - не харесвам regex - добър повод да го науча :)

Та, споделете впечатления, решения на задачите ви?

 

Ще ходим ли на поправката :):):)

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

Тагове:
8
PHP Web Development Basics 31/08/2014 16:56:58
shorti avatar shorti 47 Точки

Интересен изпит,  за мен лично доста гаден php-то не ми харесва много, но няма как без него.

Имам въпрос за 4-та задача (от 31-ви) в условието пишеше че всеки студент е на нов ред, но не и че може да има празни редове накрая, едните празни редове 50% от задачата. Най-вероятно грешката е моя, че не проверявам всичко, но след 5-6 прочитания и не намерих грешка. :D

3
31/08/2014 20:37:57
gngeorgiev avatar gngeorgiev 90 Точки

И аз убих доста време на тая задача след като всичко изглеждаше да върви ОК. Наистина и аз имах 50 точки, явно точно тези 50 с последния празен ред са ме спъвали. Препрочетох условието няколко пъти обаче от никъде не можеше да се разбере, че ще има празен ред накрая. Бил съм на доста такива изпити и според мен това тук отива малко към гадаене.

 

Някой може да ме поправи ако греша.

4
Masovski avatar Masovski 211 Точки

Хм. И аз като вас съм се подлъгал по "The input will be correct.", мъчих се да търся недействителна грешка в алгоритъма за сортиране... не и не, а то какво било :D Сега добавих един array_filter() и заспа :)

6
Reath avatar Reath 188 Точки

Според мен е малко некоректно при написано "The input will be correct." да се играе да се правят проверки за input-а. И аз се чудех и чудех къде ми гърми алгоритъма, то точно там където бях зачеркнал, че е възможно да има грешка (каква грешка може да има при explode("\n"))

5
31/08/2014 22:43:45
vladislav.karamfilov avatar vladislav.karamfilov 1123 Точки

Архивите с условията, авторските решения и тестовете може да намерите на тези линкове:

4
31/08/2014 20:36:30
felix_de_suza avatar felix_de_suza 100 Точки

Колеги някой може ли да ми помогне понеже не мога да разбера кой е последния тест и какво греша в тази задачка, а мислех че съм намерил по елегантно решение от това на авторите, но уви последния тест гърми. Ето го и код: http://pastebin.com/5RfVEc1W

P.S. Не мога да разбера защо ми излизат входовете на тестовете счупени и затова не мога да видя теста :)

1
31/08/2014 21:23:28
Dekameron avatar Dekameron 481 Точки

Здравей,

На последният тест, на входа има едно '<br/>', което при теб е с дължина 6, а трябва да е 5. Теста ти гърми защото не си го trim-нал. Добави следния код:

$item = trim($item);

на първия ред във foreach цикъла.

Вече ще ти даде 100/100 :)

2
31/08/2014 22:10:06
milen_vm avatar milen_vm 68 Точки

Моето решение от изпита е подобно и дава 100 точки.

Първо сплитвам по нов ред '/\n/', след това в цикъла тримвам всеки ред и проверявам дали е  празен стринг '', ако е такъв го пропускам.

 

1
tanija avatar tanija 60 Точки

Наистина много елегантно решение. Браво! СложИ в регулярния израз една запетайка (за да стане 2 или повече) - '/\s{2,}/' и си готов със 100 точки :-)

1
Yulia avatar Yulia 1346 Точки

Хубава организация, интересен, приятен и забавен изпит : )

И аз не изкарах много точки, но съм доволна като цяло от представянето си. Започнах добре - сравнително бързо реших първа и трета. Наистина задачите не ми изглеждаха чак толкова трудни днес. И точно заради тази преценка - за първи път от толкова изпити насам - ми се случи да зацикля повече от 3 часа над една задача... Последната. Знам, че не трябва така да се прави, но решението беше "иии аха - сега ще стане!" и не ставаше :D 0, та 0 точки. Та накрая реших да я зарежа и ми останаха само 20 минути за втората задача, за което време не успях да хвана нито един тест, хах.

Като цяло супер много се радвам, че мина този курс - надявам се да не пиша повече на php никога :D Изкарах дори прекалено висок резултат за времето, което наистина отделих за учене по php де - никак не ми хареса този език и курса леко го проспах. За първи път и за отборен проект не се записах...

Третата задача (TextGravity - решение) я реших за 75т. само благодарение на предишен опит от решаване на задачи с матрици на JavaScript и C#, a първата (Text Abbreviator - решение) си беше мега лесна. Но падна голямо ровене в google за синтаксиса на php.

PS. Дайте специален бонус за колегата, който седеше до мен, задето пишеше и дебъгваше PHP на vim в Arch Linux xD Това е...  WOW

1
05/09/2014 12:44:49
coaster avatar coaster 412 Точки

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

Явих се на първия изпит - 29 август сутринта. Отделих всичките 6 часа на втора и трета задача. Първа я пробвах в началото, видя ми се лесна и я оставих "за десерт", за накрая. Четвърта изглеждаше приятна, опитах се да я реша с класове, оплетох се и я зарязах (а и времето свършваше). Голямата ми грешка е, че през цялото време мислих, че съм ужасно близо до вярното решение на 3-та, че едва ли не един знак "равно" ме дели от 100-те точки, но уви. Втора също ме подведе по същия начин - всички нулеви тестове минаваха, но нито един от другите. След отделените от мен 3 часа на едната и 3 часа на другата - равносметката е 1:0, но не за мен, а за judge-a.

Ще се видим на поправката с надеждата да сме по-съсредоточени, по-концентрирани, по-спокойни и...
Да не ни скърца вратата на главите (както някой каза по-нагоре - грееесс :D).

6
Desso avatar Desso 146 Точки

Ето едно по-различно от авторското решение на първа задача от изпита на 29. August Evening - 01. Email Encryptor:

цък

2
Aluin avatar Aluin 76 Точки

Боже, единствената ми грешка е че съм сплитнала грешно и не съм използвала htmlspecialchars. Изкарах 85 точки, но все пак грешката е толкова ламерска от моя страна.

1
RoYaL avatar RoYaL Trainer 6849 Точки

Ами какво да кажа, явно не си взех поука от Джаваскрипта и упорито не научих regex-овете, вярвайки че ще успея on the fly. Не се получи и съответно имам 42 точки на 2ра задача.

Като ниво на трудност и изучен материал може би беше добре. Трудно ми е да коментирам, тъй като с езика имам предишен опит.

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

Апелът ми е за следващите подготовки нещата да се изпипат повече. Може би е хубаво и за самият изпит - днес имаше сгрешен изход на 3 задача - със затварящия тейбъл таг.

Ако е възможно след като един/няколко човек/а измислят задачите, някой дуг да ги реши, а не съставящия задачите, за да се избегне субективността в аутпута т.е. това да се нагласи аутпут по съставянето на задачата. Така при прочетено условие от абсолютно незапознат със задачата човек, ще се открият такива грешки. Както в подговителниет така и в реалните изпити.

9
g.stoyanov avatar g.stoyanov 776 Точки

Според мен нивото като за такъв тип изпити е много високо! Всички грешки се съобщават навреме и винаги човек може да попита за нещо което не му е ясно. За грешката с тага - тя гърмеше на зеро теста още, така че беше очевадна, според мен имаше други "грешки" :))) за които не бяхме уведомени...

Ето и един съвет и от мен който е от реалният живот: Винаги ама винаги се опитвайте да предвидите всички възможности - клиент идва и ви казва искам да му напишете функция която да прави еди какво си и да връща еди какъв си резултат, ок вие приемате условията, но... винаги има но... винаги!!! Колкото и добре да е описана функциалноста ще има нещо което остава неизяснено! Разбира се примера с функцията е твърде опростен но общо взето е така. Дори самия клиент не може да знае точно какво ще излезе при интеграцията на тази функция (да не говорим при модификация на вече съществуваща такава, за това са и юнит тестовете но това е друга тема). По това се отличава един софтуерен инженер от добрият софтуерен инженер, втория ще анализира почти всичко и ще даде своите препоръки/решения докато първия ще даде решение и след него... пачове, пачове, пачове... и... пачове, пачове...

1
01/09/2014 00:11:40
RoYaL avatar RoYaL Trainer 6849 Точки

За празния ред, ако говориш, съм съгласен и аз стартирах с 50 точки на 4та задача :)

Що се отнася зо софтуерния инженер и добрият такъв - то хората първо трябва да станат едното, а после другото :)

5
01/09/2014 14:06:16
g.stoyanov avatar g.stoyanov 776 Точки

За тейбъл тага за който говореше, на 3-та задача :).

Иначе за добрите навици - колкото по рано толкова по добре... че после може и да стане невъзможно или доста трудно да ги добиеме.

Успехи!

0
RoYaL avatar RoYaL Trainer 6849 Точки

Тъй като видях авторското решение на 4-та задача (31ви), ето моето решение на задачата, не изисква user defined functions за сортиране.

http://pastebin.com/LGKJcVu4

 

2
01/09/2014 10:00:50
Stani avatar Stani 32 Точки

Здравейте,

Бях на изпит на 29-ти сутринта. Започнах с 3-та задача, но не успях да взема пълен брой точки. (в някои от тестовете гърми).

Решението ми може да видите тук

 

Логиката ми е следната: Имам регулярен израз и функция, която търси съвпадения в текста. Когато срещне такова, се изпълнява функцията "articles", обработват се данните и се връща искания резултат.

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

За месеците пробвах с :

$realMonth=date('F', strtotime($month . '01'));

но системата ми връща предупреждение: "PHP Warning: strtotime(): It is not safe to rely on the system'..."

 

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









 

0
RoYaL avatar RoYaL Trainer 6849 Точки

Здравей,

За да използваш native функциите за работа с дати и времена трябва да сетнеш дефолтна тайм зона чрез date_default_timezone_set(), тъй като най-вероятно такава не е сетната в php.ini-то. 

Препоръчвам ти всъщност да работиш с няколкото built-in класа за работа с дати, времена и времеви интервали, започвайки от DateTime, нещата доста се олесняват с тях.

 

P.S.: Понеже не съм никак фен на РегЕкс-овете, си мисля че тези артикъли могат да се парснат и без особен регекс, всъщност самото сплитване може да стане и по символи, а уайтспейсовете да се премахнат с preg_replace. Със substr да се отреже парснатата част от summary-то (виждам, че така го правиш де, но най-вероятно някои хора са пробвали да го направят с регекс и това {0, 100}). Месецът може да се намери DateTime като се пусне цялата дата в конструктура

0
01/09/2014 12:14:54
Stani avatar Stani 32 Точки

Мерси,

Не мисля че проблемът ми е в датата (сетнах времева зона, но така или иначе и с двата варианта за дати, ми излиза правилния месец).

По-скоро в регулярния израз съм изпуснала нещо- ще го преборя.

P.S. На мен пък най-много ми харесаха регулярните изрази. :) :}

 

 

0
Dzhuliya avatar Dzhuliya 5 Точки

Здравейте, колеги, аз имам въпрос относно DropIt (първа задача на изпита от 29 сутринта). Реших да си проверявам дали символа е буква с pred_match(). Израза ми е: /[a-zA-Z]/ и би трябвало да проверява само за букви. Обаче откривам, че този израз мачва и всички символи, чийто ASCII код е между главните и малките букви. Та, ако нямате някакви съвети как да го направя с preg_match(), поне смятам, че е добре да го знаете и Вие, понеже аз не предполагах, че така работят регулярните изрази. Защото в http://www.regexr.com/ няма да Ви ги мачне :)

0
01/09/2014 15:24:18
RoYaL avatar RoYaL Trainer 6849 Точки

Не съм погледнал задачата, но на прима виста мога да ти предложа да не го правиш с preg_match а с ctype.

ctype_alpha() в твоя случай. Когато мога, ще погледна задачата и мога да дам по-адекватно предложение.

1
Dzhuliya avatar Dzhuliya 5 Точки

Готино :)
Иначе и в авторското решение беше хубаво направено, защото реално не беше толкова нужно да се използват регулярни изрази (които в моя случай ми прецакаха 70 точки :D ). 

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