Loading...

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

kiko144 avatar kiko144 795 Точки

[Exam Problems] Java Basics - Exams May 2014 - Решения

Здравейте предлагам да видим решенията за задачите от изпита, такива каквито сме ги писали там. Моите лично са мнооого грозни и определено не е качествен програмен код, но просто се бях панирал, че няма да ми стигне времето.

01_StuckNumberс

02_SumCards

03_SimpleExpression

04_LogsAggregator

Кодът е без никаква корекция и е директно от еклипса който писах на изпита, със сигурност има доста по-лесни начини за всички задачи, но нали знаете на изпит как е - за каквото се сетиш първо това почваш. След изпита с колегите като коментирахме останових, че ще е по-лесно да използваш на последната задача само 2 мапа без сет вътре, но важното е, че се пак имам 400 точки.. другото за сега остава на заден план.

 

12
Java Advanced 04/11/2014 12:17:20
RoYaL avatar RoYaL Trainer 6849 Точки

Това с 5те реда код не е за хвалене, особено че най-вероятно всички се сетихме за това първо, понеже излиза на пръв резултат в гугъл при "String to arithmetic expression java" https://www.google.bg/search?q=string%20to%20artihmetic%20expression%20java&rct=j

 

Няколко секунди след като събмитнах такова решение и, разбира се, ми даде 0/100, Наков каза пред всички, че така с ДЖаваскрипт няма да стане, принципно не съм съгласен, но е прав - позволеният език от самото начало пише че е САМО Java (на изпита по C#, ако помня добре, можеше да си избереш и javascript) а този engine просто ембедва джаваскрипт и ти позволява да пишеш джаваскрипт, който не е от позволените езици на изпита.

 

До колкото до хешмапове и трийсетове, аз лично съм се готвил сам - имам някакъв бекграунд с РНР, но там такива неща няма. Всичко е array. Така, че беше нещо ново за мен, предварително да си дефинирам какъв ще ми е хешмапа. НЕ е чак толкова трудно, въпреки че 4та задача не мжах да я направя така, но за сметка на това я направих с един допълнителен обект, и довечера ще споделя решението, тъй като в момента не съм си на личния компютър.

 

Факт, нещата които вече 2ри курс (C# && Java) ни обясняват тук са едни и същи - и на двата курса ни казаха какво е стринг, инт, фор цикъл и масив, и после ни изпляскаха изпит, в който има 100 други неща. Не е трудно да се подготвиш сам, просто е немотивиращо. На мен лично ми е все тая дали ходя в СофтУни или не, като нещата после си ги уча сам. Ще ми се да има смисъл от ходенето, така че бих помолил екипа, вместо да ни обясняват какви яки работи може да се направят с фор цикъл и накрая да ни оставят сами да си решаваме с Мапове, да почнат на лекциите да обясняват нещо интригуващо. За да отида на дадена лекция/семинар, означава че материята, която ще се преподава там ми е интересна. А защо да ходя на лекция в момента - за присъствие? През целия курс на Джава учихме АБСОЛЮТНО същото като в C#. Без никакви разлики. 

 

Дори презентациите бяха взети от C# и преправени до Джава синтаксис (в интерес на истината, не изцяло даже). Със сигурност не го казвам с лоши чувство, просто апелът ми е да се опитате да ни заинтригувате с нещо различно, а не едно нещо да го преподавате 4 пъти. ОК съм с това 1вата лекция да обясни различията между двата езика + конвенциите - как се пишта методи, класове, етс. Но до толкова, трябва останалите 4-5-6 лекции да са различни. През курса Джава, единствената различна лекция беше за регюлър експершънс, въпреки че и за това не съм убеден, може да не съм присъствал на лекцията за регюблър експрешънс в C#. Но една от 6+ лекции е твърде малко.

12
zontak avatar zontak 457 Точки

Не се сещам за нещо ,което да допълня.. Напълно съгласен !!! +1 ;)

3
kiko144 avatar kiko144 795 Точки

Еми аз пък не съм съгласен точно. Беше казано, че за поне 2 задачи ще ни трябват мапове и сетове. Имаше интересни задачи в домашното. Колкото до повтарящият се материал, беше 2 лекции и в другите 2 се преподаваше материал, който не е учен. В C# курса не сме учили мапове, сетове, Ексепшъни, регулярни изрази като добавим и нещата от "лекцията за напраднали" на С #, които ги нямаше на изпита си е половината материал, ако не и повече. Никой не е наблягал на това как се пишат цикли и променливи, а се говореше повече за разликите между езиците. Се пак единственият минус според мен беше, че никой не качи истински примерни задачи, а просто копнаха някакви задачи от С #-a и не се знаеше какви задачи да очакваме!

6
Plami avatar Plami 373 Точки

Аз съм частично съгласна и  несъгласна с твоето мнение. От една страна е хубаво да наблягаме на материала, който ще се дава на изпита. Така по-лесно ще се справяме и информацията ще ни е доста смляна :) Но от друга страна в реалния ни живот на бъдещи програмисти няма да имаме този късмет, ще ни дават задачи без да питат дали сме го учили :D И въпреки, че и аз се провалих на изпита, отчитам това като моя грешка. Не трябва да се ограничавам в усвояването само на простите задачки, а трябва да се ровичкам повече. Мисля, че целта на Наков е да ни кали още с изпитите в СофтУнито, за да не се получават проблеми в бъдещата ни кариера.

Но все пак мисля, че поне трябва да се споменава по-рано (а не един преди изпита) горе долу до къде трябва да стигнем с усвояването на материала. Все пак е доста гадно половината от времето на изпита да търсиш и усвояваш основен материал, а не да се фокусираш върху самата задача :)

3
tanija avatar tanija 60 Точки

Божее не могада повярвам каква глупава грешка съм допуснала на 01_StuckNumbers . Ужас само един ред в повече съм написала. Заблудата ми идва от там съм казала като намериш двойките числа , ги печатай 2 пъти един път в прав един път в обратен ред.Това е поправената версия. И как не се усетих , незнам.... След това ужасно боледуване през което минах и дойдох на изпита натъпкана с лекарства пак съм доволна , но за поправката съм се амбицирала много.

Ко;леги благодаря че споделихтте решенията още снощи!

1
aslv1 avatar aslv1 304 Точки

Здравейте! И аз ще сложа решенията си от изпита (#3, 01. 06. 14.). Естествено, това не са най-оптимизираните варианти, а това, което най-първо съм се сетил на място.

Stuck Numbers

Sum Cards

Simple Expression

Logs Aggregator

По-късно се сетих, че първата задача може да се реши без конверсация към String, но това вече няма значение laughing

0
RoYaL avatar RoYaL Trainer 6849 Точки

http://pastebin.com/8LJZEYuR

 

Това е моето решение на 4-та задача. Признавам си, с мапове и дървета не можах да я направя и това е причината да я направя така, но ако направя една ретроспекция и приема, че можех да я реша с дървета, пак щях да я направя така. Факт, че нито е перфектен кода, нито е по-кратък, директно съм го пейстнал, както ми е в submissiona. Но причините да избера отново този вариант пред хеш мап са:

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

2. Построяването на логика върху елементите от мапа, трябва да се направи минавайки през тях, докато метод в самия клас, важи точно за текущия обект и така е много по-ясно че ползваш да речем getIp() /върху, който има изградена логика) от Person т.е. текущата инстанция. В противен случай getIp() щеше да итерира в мапа и да вади това, което трябва. Един лейър по-малко.

Тук няма да споменавам четимост и т.н., защото такава не е постигната особено, но както вече казахме за 6 часа трябваше да преоткрием света, пък след това и да го моделираме :)

 

P.S.: Доста ми харесва и последното дадено решение на тази задача в поста преди този.

2
kiko144 avatar kiko144 795 Точки

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

1
RoYaL avatar RoYaL Trainer 6849 Точки
/offtopic Явно нещо правят по форума, тъй като ми излезе опция да избера отговора си за best answer, което не би трябвало да е възможно :)
0
Yulia avatar Yulia 1346 Точки

Колеги, ако някой е голям фен на Java и му е скучно с HTML и CSS, може ли да ми помогне малко? Не съм си позволила все още да погледна авторските решения и тестовете. Споделям решенията си, написани пе време на изпита и след това (по спомени на условията). Бях на изпит на 27-ми (Вторник)

1. Count Beers - 100/100

2. Three Largest Numbers - 100/100
На изпита имах 60/100, но после разбрах, че всичко е в това "toPlainString"... и не се бях сетила, че може да има еднакви числа.
Иначе как работи: добавям всичко в TreeSet от BigDecimal. Но първо го чета като string, за да replace-на запетайките с точки.
Ии после със .last() принтирам най-голямото число. И... го трия от сета за да има друго голямо число :D Не е съвсем изпипано, но понеже тестовете не са перфектни, минава...

3. OddEvenSequence - 80/100
На изпита взех само 10 точки... Проблем беше най-вече парсването на входа - не знам защо не работеше. Сега с "\\D+" е перфектно. И трябваше да оправя логиката за "магическите нули", за което не се занимавах по време на изпита, защото мислех, че и без това ще гърми от входа :D И все пак ще се радвам някой да ми каже къде се губят другите 20 точки...

4. Orders - 20/100 ...
Използвах логиката на подреждане на телефонен указател от книгата за Java (стр.723 в pdf-а) и работи, но не ми се подреждат така, както се изисква в outputa ии не знам как да го подредя. A... и не ми се сумират поръчките >.< Някакви идеи?

2
Plami avatar Plami 373 Точки

Yulia 

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

Дано добавят коментари и другите колеги.
0
yavor2000 avatar yavor2000 114 Точки

Здравей, Юлия,
за 4-та задача Orders - за да се запази реда в който са вкарани item-ите в hashmap-а order, трябва да дефинираш hashmap като LinkedHashMap:
HashMap<String, TreeMap<String, Integer>> orders = new LinkedHashMap<String, TreeMap<String, Integer>>();

вече работи точно както се иска :)

1
Yulia avatar Yulia 1346 Точки

O, благодаря, Явор :) Сега наистина подреждането е вярно. Не знаех за съществуването на LinkedHashMap. Сега остана само... да се сумират поръчките и всичко ще е 100/100 ^^

1
yavor2000 avatar yavor2000 114 Точки

Ето и моите решения на задачите от Java exam#2 на 27.05.2014

Problem01_CountBeers

Problem02_LargestThreeNumbers

Problem03_LongestOddEvenSequence

Problem04_Orders

 

edit: публикувах и решенията от останалите изпити. Решенията дават по 100 точки.

Аз се явих на първата дата, и кода е както съм го написал на изпита, не е "подобряван" след това :)


Java exam #1 от 26.06.2014

Problem01_VideoDurations

Problem02_PythagoreanNumbers

Problem03_Largest3Rectangles

Problem04_CouplesFrequency

 

Java exam #3 от 01.06.2014

Problem01_StuckNumbers

Problem02_SumCards

Problem03_SimpleExpression

Problem04_LogsAgregator

1
design.angelova avatar design.angelova 69 Точки

Здравейте,

моля за малко помощ относно тази задача - CountBeers

Не мога да разбера защо дава 60 точки, какво пропускам :)

Благодаря предварително.

1
XmUrF avatar XmUrF 363 Точки

На 24-ти ред вместо if (beers >= 20) { го направи while (beers >= 20) { и ще изкараш 100 точки. Ти искаш това действие да се повтаря, докато бирите паднат под една каса, а не само веднъж.

0
design.angelova avatar design.angelova 69 Точки

Благодаря много :)

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