[Exam] Java Basics - 21 September 2014 - впечатления, решения, резултати
Тъй като вече официално приключи и вторият изпит по Java Basics за днес, реших да отворя темата.
Първо, поздравления на успешно справилите се, а те не са малко.
Как ви се сториха задачите? По-лесни, по-трудни или на нивото, което очаквахте? Имаше ли по-кофти моменти, с които (не) сте се преборили?
По мое мнение задачите бяха на очакваното ниво; не бяха нито по-лесни, нито по-трудни от задачите, които са давани на предишните изпити. За разлика от някои спорни моменти, които установихме в предишни задачи, на днешния изпит аз поне не видях да има кой знае какви проблеми с условията или тестовете, т.е. доста по-шлифовани бяха.
Гледайки резултатите, около 20% от студентите имат 400 точки, което е съпоставимо с резултатите от изпитите по C# Basics на нашия випуск. Това означава според мен, че випуска като цяло се движи с очакваните от СофтУни темпове и се поддържа някакво постоянно ниво.
Аз бях в сутрешната група, та конкретно мога да споделя мнение за задачите от сутринта.
1-ва задача - стана ми лошо като видях името - Timespan. В Java времената са ми мъка; вярно, в Java 8 има доста по-кадърни класове за работа с такива обекти, но проблемът е, че имам малко практика с тях. Другият сериозен проблем е, че търсенето в гугъл често изкарва стари теми, в които се дават съвети с използването на остарялото и дървено java.util.Date. Неслучайно оставих тази задача и директно преминах към следващите. Без да преувеличавам, тук загубих най-много време, като накрая изтрих всичко и си реших задачата с int-ове, за щастие логиката не беше много сложна да се разпише и я направих сравнително бързо след като вдигнах ръце от разните парсвания към дати и т.н.
2-ра задача беше стандартна, омотах се малко в един момент, защото не си бях прочел старателно условието, но бързо си поправих грешките. Може би най-лесната за мен задача от изпита.
3-та задача беше по-завъртяна, ползвах два регекса, които доста облекчиха нещата. Който не е успял да научи регекс обаче сигурно е видял доста зор да си оправи входа и да го докара до думите, чиито тежести трябва да смята. Според резултатите, тук явно най-много хора са закъсали.
4-та задача - лесна за хората, които са решавали и схванали предните задачи с мапове. Вероятно непосилна за останалите. Имаше тук два по-трикови момента: 1) ядките трябваше да се принтират в реда, в който са получени на входа (т.е. TreeMap и HashMap отпадат като вариант), 2) трябваше да се взима substring преди парсването към число на количествата, за да се елиминира "kg" от входа. Третият по-важен момент е принтирането на изхода, като общо взето вариациите в този тип задачи идват основно в тази част. След последната лекция, на която бяха обяснени различните структури, подготовката, на която Асен реши задача с мап в мап, както и 1-2 самостоятелни решения, задачата я написах на един дъх, основно времето ми отиде, за да я изкодя. Няма особена вариативност в 4-тите задачи и наистина за тези, които са успели да отделят някакво време да се подготвят за нея, това е почти сигурно решена задача.
ТУК може да видите моите решения. Ще се радвам ако някой сподели по-различни начини за решения, най-вече на 1-ва задача, мисля, че на останалите няма кой знае колко място за творчество.
И аз така подходих на 3-та задача, вероятно някъде другаде ти е била грешката. Ако споделиш код може да разследваме.
Ето кода, казвайте какво съм объркал :)
http://pastebin.com/0t2DLf7b
ПС. Съжалявам за повторенията на постовете, GoobleChrome нещо ми прави мизерии...
Първия регекс си го усложнил малко, може наистина там нещо да се е оклепало, защото не е много четимо с тези безброй наклонени черти.
Другото, което е можело да ползваш, вместо ArrayList, int[] за теглата. Аз така и не покрис случая да имам празен запис в масива с думите, но за щастие такъв явно не е имало.
По останалата част на кода не виждам някаква разлика в логиката в сравнение с това, което аз направих, така че първия регекс остава главен заподозрян, освен ако не пропускам нещо.