Loading...

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

evgenyv avatar evgenyv 12 Точки

[Exam Problems] Java Fundamentals 23.04.2016 - problem {4} - GUnit

Здравейте, 

как сте след вчерашния изпит? :))

Може ли някой да покаже решение на последната задача (GUnit) и това прословуто сортиране?

Ако пък му се занимава, може ли да каже и защо на мен ми върви само Zero test-ът, а после гърми?

линк към моето решение: тук

P.S. Със сегашното решение вече не гърми, проблемът беше липсата на scanner.nextLine(), когато регексът не е мачнат, и съответно зацикляше. Все още има проблем, тъй като резултатът не е пълен.

P.S.2 Задачата вече е 100/100. Оправена е и в github. Проблемът беше, че липсваше вълшебната думичка return на едно място :)) Тънка е границата между 0 и 100 точки - scanner.nextLine() и един return. :D Това е в кръга на шегата, разбира се. Благодаря на всички, които се включиха в дискусията и пратиха решения!

Тагове:
4
Java Advanced 24/04/2016 18:17:16
AntonPortenov avatar AntonPortenov 102 Точки

Здравей, не успях да е реша винаги някой от сортиращите ми методи се дънеше. Не съм ти гледал целия код, стигнах само до регекса и това което пишеш в constrains а именно ме входа може да ти е всякакъв. Ти трябва да вземеш само този, който е в дадения формат class | metod | test

според мен от тук ти идва и проблема

0
evgenyv avatar evgenyv 12 Точки

Мерси за отговора. Не е това проблемът. Сложих регекс за целия ред: "[A-Z]+[A-Za-z0-9]+\s\|\s[A-Z]+[A-Za-z0-9]+\s\|\s[A-Z]+[A-Za-z0-9]+". Отново гърми с time limit (както и преди).

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

1
24/04/2016 10:09:06
todor11 avatar todor11 6 Точки

Като начало първия ти RegEx : ^([A-Z][a-zA-Z0-9]+)$ В превод - началото на текста да започва с 1 главна буква, последвана от поне 1 малка, или голяма буква , или цифра ,  край на текста. При твоя ще брои за валидни и : 5AW , Dhfyj:; , dffgfAdg fgll - а те не са .

1
24/04/2016 10:13:03
evgenyv avatar evgenyv 12 Точки

Match-ва само някаква част от тях, а аз проверявам дали не съвпадат напълно (с метод matches). Съответно не ги брои за валидни, тъй като в твоя пример първото започва с цифра, второто съдържа ":" и ";", а третото започва с малка буква - съответно не ги мачва напълно и цикълът продължава със следващия ред. Може да го видиш в кода ми. Както и да е... Кажете нещо за сортирането, моля ви :D

 

Не е проблем, пак си match-ва поне една главна бувка, последвана от поне една главна, малка или цифра. Дори вариантът на колегата с regex за цял ред във формат (class | method | test) ми се вижда още по-удачен. Проблемът си седи и мисля, че определено не е в регексът.

1
24/04/2016 10:31:51
evgenyv avatar evgenyv 12 Точки

Намерих отчасти къде е проблемът. Липсва s = scanner.nextLine() , когато регексът не е мачнат.. Затова гърмеше по време.. сега имам 40/100.. ще кача новото решение

1
ibosev avatar ibosev 54 Точки

Ще се скъсам от яд.... снощи 4 часа си мислех, че е от сортирането, а то излезе от регекса... Ще пукна...

ето го моя код: http://pastebin.com/NHeNUbrb 

1
EvgeniyaL avatar EvgeniyaL 35 Точки

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

това е регулярния израз, който работи "^([A-Z][a-zA-Z0-9]+)\s\|\s([A-Z][a-zA-Z0-9]+)\s\|\s([A-Z][a-zA-Z0-9]+)$". Първа група име на класа втора група име на метода трета на тестовете. Този символ ^ е за начало на стринг, а този $ е за край. Като се напише така регулярния израз не мачва инпути със интервали или символи в началото и интервали или символи в края, които се смятат за невалвидни по условие. Всички тестове с изкючение на нулевия са счупени по този начин. 

Поздрави

2
evgenyv avatar evgenyv 12 Точки

Здравей, колежке,

Може и без ^ и $ в началото и края, ако ползваш метод matches после. Той мачва изцяло и ако има други символи или интервали отпред или отзад, ще е false. Така го е направил и колегата.

Поздрави ;)

2
iliyan.vangelov avatar iliyan.vangelov 57 Точки

*решение* ползвах TreeSet-oве от Map.Entry-та за сортирането, като им разписвам компаратори. И отделно един компаратор за сортирането на листа от юнит тестове. Ще погледна и твоето по- късно, че не мога в момента.

0
nikito873 avatar nikito873 10 Точки

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

9
20/06/2016 15:41:46
evgenyv avatar evgenyv 12 Точки

Мерси, ще прегледам решението ти :)

0
NickSU avatar NickSU 3 Точки

Браво, колега! Много елегантно!

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

Благодаря зя споделеното решение!

 

 

0
mbeleva88 avatar mbeleva88 69 Точки

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

0
GeorgiSK avatar GeorgiSK 5 Точки

Здравейте,

относно сортирането, според мен е много по лесно да представиш нещата в класове в които да имаш ArrayList-ове и след това

с метод .sort от листа можеш да напишеш lambda на 3 реда която да сортира всичко много лесно.

Ето линк към моето решение ако някой се интересува: 

https://github.com/GeorgiSK/ExamsAndHomeworks/blob/master/Exams/ActualExam/src/GUnit.java

0
djc_bg2015 avatar djc_bg2015 923 Точки

Здравей,

регекса ти не е мн коректен, но просто не е имало тест в който името на клас/метод/тест да бъде реално с 2 букви, както споменато , че е възможно да се случи по условие.

Rectangle | Sd | Bla

Това е валиден инпут, който регекса ти няма да хване :)

Поздрави!

 

0
AntonPortenov avatar AntonPortenov 102 Точки

Някой да е имал проблеми със 7 и 10 ти тест?

и начинът по, който се е справил с тях?

http://pastebin.com/snb0K57q

0
24/04/2016 22:43:45
AntonPortenov avatar AntonPortenov 102 Точки

Имам един въпрос.

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

Опитах какво ли не, но въпреки всичко не ги сортра.

Ще бъда благодарен ако някой ме насочи къде е проблема.

http://pastebin.com/GLPqzGdB

0
RoYaL avatar RoYaL Trainer 6849 Точки

Когато напишеш sorted() втори път, презаписваш първия sorted().

0
AntonPortenov avatar AntonPortenov 102 Точки

Мерси за отговора но при премахването на дублирания сорт, резултата остава непроменен.

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

Collections.sort(data, new Comparator<Framework>() {

				@Override
				public int compare(Framework o1, Framework o2) {
					int index = Integer.compare(o2.countTests, o1.countTests);
					if (index == 0) {
						index = Integer.compare(o1.countMetods, o2.countMetods);
					}
					if (index == 0) {
						index = o1.getClassName().compareTo(o2.getClassName());
					}
					return index;
				}
			});

http://pastebin.com/snb0K57q

 

защото на 7 тест при подадени класове intelij и еclips принтира когато всички методи и тестове са равни, принтира първо intelij

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