Loading...
marsp avatar marsp 19 Точки

Judge Assignment 05 - Task 5 - Sorting

Здравейте!

То по-скоро темата е осново предназначена за Жоро, ако може да даде насока/подсказка за това, защо гърми първият тест и изкарвам 80/100 точки. Опитах най-различен тестов input и за трите типа (int, string, Song) и подребдата уж винаги е правилна. Малко ми се поизчерпаха идеите.. :D

Поздрави!

0
C++ Programming
Todir avatar Todir 24 Точки

И аз запецнах тук. Сигурен съм че нещо не разбирам добре условието въпреки 10-те прочитания. Предполагам разковничето има връзка с оувълоуда дето е в Сонг.х файла

// NOTE: this is intentional - it defines an ordering by name, so that you can't use an operator overload to order the Song objects in the task. Think of a different approach
bool operator<(const Song& thiz, const Song& other) {
	return thiz.getLengthSeconds() < other.getLengthSeconds();
}

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

0
gslavchev avatar gslavchev 5 Точки

Според мен условието на задачата е много ясно написано и щом решенито дава 80 точки, на дали поредното му прочитане ще подобри резултата. Мога да споделя, къде очаквах издънка, но Judge я прие: не махам последният интервал от отговора. Имам следното предположение, къде може да гърми. Най вероятно при сравнението на песните и то при случай че са равни, но с различни имена. Спазете точно желаната от скелета последователност и би трябвало да тръгне. 

Успех  

1
05/10/2018 13:03:50
marsp avatar marsp 19 Точки

Четох и аз условието 100 пъти и уж не пропускам нищо. И интервала накрая съм махал и съм записвал и песните с равни секунди, но различни стрингове и по азбучен ред и наобратно. Все не минава. :D Наистина нямам други идеи като цяло. Пробвах доста видове входни данни. Нещо изпускам със сигурност, но на този етап не намирам какво. Мерси все пак. :)

0
05/10/2018 13:24:32
MartinBG avatar MartinBG 4803 Точки

При сортирането на песните се взема под внимание само и единствено продължителността им.

0
gslavchev avatar gslavchev 5 Точки

Проблемът според мен е точно в компаратора. Спази си точната последователност на сравненията. (първото по-малко от второто) и после инвертирай резултата. 

0
Todir avatar Todir 24 Точки

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

0
gslavchev avatar gslavchev 5 Точки

Компаратора на сет-а определя кои елементи ще влязат в него, като по презумция те трябва да са различни. Компаратора може да се извика 1 или 2 пъти, като от него се очаква да дава резултат дали първото е по-малко от второто. Първият път пита:

 а < б , ако да добре, добвя елемента и не пита повече. Ако не е пита втори път:

б < а, ако не е значи елементите са равни и не записва нищо, иначе пак записва.

В конкретният случай  имаме: !(а < б) или а >= б, което минава още на първото сравнение. (допуска и равни елементи)

Тествай си двата случая с песни с еднакво време и различно име. 

0
marsp avatar marsp 19 Точки

Ок, явно аз нещо все още не разбирам. Тази проверка (първо "a<b" и ако не - "b<a") трябва да става в единият случай в LessThan и другият в Reverse? И да речем ако са различни стрингове, но еднакво време, какво би следвало да изкарва? Понеже при мен за това, което имам като код, винаги изкарва първият влязъл Song обект с това време, всеки следващ с такова време (независимо от това дали е различен стринг) не бива добавян. 

И също при вас как работят стринговите входни данни (когато е зададено "w")? При мен понеже ползвам istringstream в Parser приема дума по дума, макар че съм експериментирал и с цял ред да хваща (дори колкото евентуално да мине само първият тест), но пак не е от това по мои наблюдения.

0
08/10/2018 04:06:05
Todir avatar Todir 24 Точки

При мен се получи точно както каза gslavchev. Reverse вика LessThan и ако LessThan върне true за а<б то Reverse връща false на сета. Първо го бях направил LessThan да прави б<а и Reverse да връща същото. Стори ми се, че е все тая ама не е.

1
gslavchev avatar gslavchev 5 Точки

marsp в кокретната задача се чупи малко логиката на сет-та. При така написания компаратор сет-та освен че се сортира, позволява и еднакви стойности. Дадох пример с песните, защото по условие входните данни са уникални и само при тях е валидно няколко различни песни да имат едно и също време. Но по принцип може да тествате и с еднакви инт или стринг. Трябва да се изпечатат всичките. 

1
marsp avatar marsp 19 Точки

Колеги, благодаря ви за насоките! Успях да изкарам и аз най-после 100-те точки с вашата помощ. Все още не съм сигурен, че разбирам, защо така се получаваше. Пак пускам апел към Жоро като изтече срокът на това домашно, да пусне тук входните данни за първият тест, да можем да видим (или поне аз) в каква точно ситуация на входни данни "фейлва", ако не е направено по описаният от вас начин. Изключително ми е любопитно. :) 

Ако сте го дискутирали и го има в лекцията от днес, моля да ме извините, още не съм гледал запис.

Поздрави!

0
georgi.stef.georgiev avatar georgi.stef.georgiev 921 Точки

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

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