Loading...

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

tilchev92 avatar tilchev92 Trainer 128 Точки

ACSharpExam31May2015 - Pr01CommandInterpreter

Докарах тази задача до 95 точки и нещо блокирах. Проблема е в 19ти тест:

Input Output
a A b B c C d D
reverse from 0 count 8
sort from 2 count 6
rollLeft 81
rollRight 45
end
[b, B, c, C, D, d, a, A]

При C# без IgnoreCase сортира както е outputa и няма проблеми (нормално задачата е правена за този език).

Когато се решава на Java обаче, ако сортираш без ignore case излиза това:
[C, a, b, c, D, d, A, B]

А когато е с IgnoreCase е това:
[B, b, C, c, D, d, A, a]
Този output излиза при всеки вариант за IgnoreCase, за който се сетих или намерих тук.

Това ме наведе на мисълта, че трябва да си направя някакъв компаратор но не мога да го измисля как да е точно. Предложения?

Ето го и целия ми код: http://pastebin.com/qv2L0Y44. Възможно е и грешката да ми е другаде, но се съмнявам тъй като всички останали тестове ми минават.

Тагове:
2
Java Advanced 14/11/2015 13:11:09
Innos avatar Innos 419 Точки
Best Answer

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

Ето какво разписах, то логически ignore case comparator-a на Java си изглежда смислен, реално 2рото условие за сравнение да е по  ascii кода им ми изглежда правилно на мене.
Линк

1
14/11/2015 22:46:55
tilchev92 avatar tilchev92 Trainer 128 Точки

Чесно казано и на мен начина по който Java сортира ми се струва по-логичен (както е и за всичко останало между 2та езика :D ). Мерси за компаратора.

0
Filkolev avatar Filkolev 4482 Точки

Това, което се очаква като сортиране, е InvariantCulture в C#. В Java не съм се опитвал да го докарам този тест, може да опиташ да сетнеш културата на американска.

В крайна сметка и да не успеем да открием решение - просто да се игнорира този тест при решаване на джава.

0
tilchev92 avatar tilchev92 Trainer 128 Точки

Бях го пробвал това така:

Collator usCollator = Collator.getInstance(Locale.US);
usCollator.setStrength(Collator.PRIMARY);
Collections.sort(arr.subList(start, end), usCollator);

Сега реших да поразцъкам различните опции на този Collator и взе, че стана с Collator.FULL_DECOMPOSITION

При първия събмит 2 теста реваха за време, при втория съм 100/100. Case closed. Все пак се надявам, че на изпит по джава няма да се налага да правим такива извръщения. Благодаря.

0
14/11/2015 13:47:29
Filkolev avatar Filkolev 4482 Точки

Е не, на изпит по конкретен език задачите се пишат и тестват за езика, няма да има подобни недоразумения. А и да се случи то ще се види по време на изпита и в крайна сметка някой ще излезе да каже какво трябва да се направи.

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