Horse Racing

  • 9
  • Недоступна
Уж лучше программировать, чем делать ставки... Тем не менее, скачки и прочие гонки прекрасно иллюстрируют многопоточность! Итак, разберитесь, что делает код, и реализуйте метод, которых будет считать количество лошадей, пришедших к финишу. И ещё, нужно обязательно подождать, пока аутсайдеры также закончат гонку.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (172)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Alexandr Volchkov16 уровень, Киев
пятница, 16:38
Даже понимая как решать не всегда сообразишь как это написать. Подсказка: Делаете цикл в котором перебираются лошади. Потом подключаете условие в if (если лошадь добежала) причислить её к добежавшим. Потом else if (А если не добежала) то сказать что мы ждем и ждать. Будьте внимательны и будет вам счастье со второй попытки=))
SoloH17 уровень
12 марта, 12:31
 три попытки потому что валидатор не принимает метод  isFinished() без скобок, хотя компилятор спокойно отрабатывает.
Сергей С17 уровень, Минск
пятница, 12:13
Ваш метод "isFinished() без скобок" - это логическая переменная boolean isFinished, которая также объявлена в задаче (private boolean isFinished; ), поэтому компилятор и принимает ваш код. То есть вы на объекте вызываете не метод, а переменную с таким же именем. Метод не может быть без скобок! Как вы вообще дошли до этого уровня с незнанием этого?
SoloH17 уровень
суббота, 21:01
Как то дошел не пропуская почти ни одного решения) Внимательность меня иногда подводит, но спасибо за коммент, увидел где затупил)
Tanarri18 уровень
5 марта, 09:02
Кто мне пояснит, накой там нужен этот цикл: while (calculateHorsesFinished(horses) != horses.size()) { } в нем же будет всего 1 проход в текущих условиях //разобрался. Если каким то образом изменится Horse и перестанет всегда в isFinished() отдавать true если метод завершен, то цикл совершит более 1 итерации. Если же считать, что Horse останется как в этой задаче и никаких его наследников передаваться не будет, где isFinished() могло бы быть переопределено, то можно смело заменить while на if.
Don Fear19 уровень, Екатеринбург
25 февраля, 12:04
Потратил 3 попытки, пока не понял, что валидатор не принимает конструкцию
for (Horse horse : horses) { }
(((
Tanarri18 уровень
5 марта, 07:33
А у меня эту же конструкцию принял спокойно. Что я делаю не так?
Don Fear19 уровень, Екатеринбург
5 марта, 11:45
Возможно в обновлениях поправилии..? (недавно было)
Александр19 уровень, Казань
21 февраля, 12:24
Куча красных пунктов - все неправильно!
if (horse.isFinished){
добавил скобки, задача принята =)
if (horse.isFinished()){
VDT16 уровень, Екатеринбург
3 марта, 12:27
Тоже совершенно не понял, для чего этот метод. Я так думаю, это типа намек на то, что переменная ПРИВАТ, а метод (как будто бы ГЕТ) ПАБЛИК. И по логике будь они в разных классах, мы бы эту переменную и не у видели. Дак тогда и уберите class Horse в отдельный файл. Либо уберите требование вызова, по сути, бесполезного метода. (Это я к разработчикам... если что)
VK19 уровень, Киев
20 февраля, 10:07
Ну вроде понял, с первой попытки решил, а сам такое наверно не напишу. Странное чувство которое периодически меня грузит.
Александр17 уровень
19 февраля, 06:15
Доброго времени суток всем! "Сжег" 4 попытки на том, что в цикле проверки на isFinished() шел по листу до horseCount, а не до horses.size(). В итоге первые два условия не проходили, только непонятно почему, т.к. длина массива в принципе не может отличаться от horseCount. Работа валидатора конечно доставляет)))
Aleksei Dobrovolskii20 уровень
15 февраля, 03:32
9 попытка. Скобки. Невнимательное прочтение задания *facepalm*
Рауль16 уровень
13 февраля, 06:56
Доброго времени суток всем! Мне кажется условие задачи про лошадей вводит в заблуждение. С 13 попытки, перелопатив уже весь код, валидатор почему то принял мое решение, как мне кажется, - неправильное, а, опять таки, как мне кажется)) правильное не принимает. НО! Непонятно вот что: В условии сказано: п.2: Если лошадь еще не пришла к финишу, то п.2.3: не считать такую лошадь финишировавшей. Смотрю свой вывод. Две лошади еще не финишировали, для которых запустил Join. Но метод возвращает выводит в консоль количество финишировавших лошадей 10, а не 8. Понятно, что так получается из-за цикла while в методе main. Не понятно только зачем он нужен. Если цикл закомментить, то программа работает идеально по условию. Кто нибудь может мне объяснить: я не прав или условие некорректное?
Алексей18 уровень, Минск
15 февраля, 11:49
Может я не правильно вас понял, но все правильно, и будет выводить 10 лошадей, а не 8. join, по сути, ждет, когда закончится процесс, и после этого выводит. В моем случае это выглядело так: Horse_02 has finished the race! Horse_01 has finished the race! Waiting for Horse_03 Horse_06 has finished the race! Horse_10 has finished the race! Horse_05 has finished the race! Horse_04 has finished the race! Horse_08 has finished the race! Horse_09 has finished the race! Horse_07 has finished the race! Horse_03 has finished the race!
Ivan Kozlovich19 уровень, Санкт-Петербург
8 февраля, 13:30
Задачка класс. Решил, но не понял, что и как. Потом почитал комментарии, и наступило прозрение)))