Loading...
VasAtanasov avatar VasAtanasov 48 Точки

Programming Fundamentals Exam - 04 March 2018 - Java Решения

https://judge.softuni.bg/Contests/960/Programming-Fundamentals-Exam-04-March-2018-Part-I

Problem 01. Padawan Equipment - https://pastebin.com/vvPrTywV  100/100

Problem 02. Kamino Factory - https://pastebin.com/8yXed5GE 100/100

 

https://judge.softuni.bg/Contests/962/Programming-Fundamentals-Exam-04-March-2018-Part-II

Problem 03. Star Enigma - https://pastebin.com/qRePJF6V 100/100

Problem 04. ForceBook - https://pastebin.com/iTNSR80m 100/100

Problem 04. ForceBook - https://pastebin.com/UEB5q1jx 100/100  -  проба със Stream API и класове

Някой ако има по-оптимизирани решения или други интересни идеи да споделя.

0
Programming Fundamentals
DenitsaPambelova avatar DenitsaPambelova 3 Точки

Здравейте!

Бихте ли ми обяснили в задачата Padawan equipment редът, в който намаляме броя на коланите в зависимост от броя на студентите. По-назад съм с материала и не мога да си обясня как работи. (Ако броят на студентите се дели на 6 без остатък,резултатът от делението на 6 е броят на безплатните колани и го изваждаме от броя на студентите ?!). Благодаря!

Integer beltCount = (studentCount == 0) ? 0 : studentCount - (studentCount / 6);

0
VasAtanasov avatar VasAtanasov 48 Точки

Здравей.

Нарича се Ternary (shorthand for if-then-else statement) и изразът - Integer beltCount = (studentCount == 0) ? 0 : studentCount - (studentCount / 6); е същият като:

--------------------------------------------------------------

Integer beltCount;

If (studentCount == 0) {

beltCount = 0;

} else {

beltCount = studentCount - (student / 6);

}

Или обяснено по следният начин:

променлива = (някакво услови)  ? изпълни тази част ако условието е вярно  : изпълни тази част ако условието е грешно;

Задължително е винаги частите да са две и да могат да се побират в променливата т.е. ако променливата е итеджър двете части трябва да връщат интеджър;

The ? : operator in Java - http://www.cafeaulait.org/course/week2/43.html

------------------------------------------------------

А самото деление на 6 го правя за да видя колко пъти има група от по 6 студента за да знам колко колана да махна. Тъй като е деление на цели числа няма да ни излезе число с десетична запетая  (10 / 3 = 3 ако беше реално щеше да е 3,333333)

Ако правя модулно деление примерно :

36 % 6 = 0;

5 % 6 = 5;

В първият случей имам 6 безплатни а модулното ни дава 0. При втория имам 0 безплатни пък излиза, че имаме 5.

Напрактика може да се пропусне горната проверка тъй като 0 делено на всяко число дава 0, пък на нула не се дели. т.е

 Integer beltCount = studentCount - (studentCount / 6); също ще ти е вярно. Няма верятност за делене на нула.

 

1
08/03/2018 14:01:35
XuTkO avatar XuTkO 2 Точки

Тези решения ми се струват доста нареднали за след Programing Basics, може би се занимаваш отдавна с Java. Човек който идва от Basics доста зор ще види с твоите решения :)

0
Lyubomir_Georgiev avatar Lyubomir_Georgiev 1 Точки

Не знам дали на Джава има SortedDictionary/Map и SortedSet, но на С# става елегантно, защото намалява проверките и сортирането.

Аз по подобен начин съм ги решил на С#, като за "силата" съм ползвам SortedDictionary и value-тата в SortedSet вкарвам всички бойци, по тоя начин не се притесняваш за дублирания, защото SortedSet-а си се оправя сам и трябва само да провериш дали има подобен боец в другите Сетове.

0
dancho9311 avatar dancho9311 1 Точки

Някой на C#

0
Nbonev avatar Nbonev 5 Точки

Супер много се затруднявам с подреждането в Java. Ето го моето решение на задачата, без да съм успял да направя подредбата. Може ли да помогнеш и да ми обясниш няколко фундаментални основи за подредба. Благодаря предварително.

https://pastebin.com/uPT9H15L

 

0
VasAtanasov avatar VasAtanasov 48 Точки

Здравей.

По условие имш следното

  • As output for each forceSide, ordered descending by forceUsers count, then by name,  you must print all the forceUsers, ordered by name alphabetically

 Първо сортиране по борй юзъри в листа после по име ако броят им е еднакъв. След това в листите имаш сортировка по азбучен ред ,добра работа върши TreeSet в този случей. Хем ще имаш уникални юзъри хем автоматично се сортират от програмата. Сортировката ти зависи от условието на задачата. Вече как зависи от твойте предпочитаня и кое ти е по-интуитивно. На мен лично сортирането със Stream API повече ми допада защото няма нужда да запазвам резултата в нова колекция а директно принтирам. A а може в нова колеция, но тя трябва задължително да е такава, която пази реда, например HasMap/Set няма да ти свърши работа защото не пази реда. Такава, която го пази е LinkedHasMap.

Ето примерне код от задачата:

forceSide.entrySet().stream()
        .filter(s -> s.getValue().size() > 0)
        .sorted((s1, s2) -> Integer.compare(s2.getValue().size(), s1.getValue().size())) // тук сортирам по брой юзъри в листа(TreeSet).
        .forEach(s -> {
            System.out.println(String.format("Side: %s, Members: %d", s.getKey(), s.getValue().size()));
            s.getValue().forEach(u -> {
                System.out.println(String.format("! %s", u));
            });
        });

 

http://www.mkyong.com/java8/java-8-how-to-sort-a-map/ 

https://www.mkyong.com/java/how-to-sort-a-map-in-java/

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

0
Ale96 avatar Ale96 0 Точки

Здравейте, някой може ли да ми каже къде ми е грешката, в judge ми дава 80/100, задачата е Star Enigma

Линк към кода: https://pastebin.com/kcasw3sX

0
03/04/2018 18:40:44
RadheShyam avatar RadheShyam 2 Точки

You can find below resource with some best solution or ideas,

http://www.flowerbrackets.com/sort-hashmap-by-value/

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