Реализовать метод fight

  • 4
  • Недоступна
Тео Баслим, полковник в отставке, в юности участвовал в боях, и теперь ему стало скучно. Он узнал, что его соседка Светочка Валерьевна завела полтысячи котов, и решил предложить ей устраивать бескровные кошачьи бои (на кровные она бы не пошла). Дело за малым: нам нужно реализовать механизм драки котов в зависимости от их веса, возраста и силы.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (541)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Прохор6 уровень, Москва
вчера, 14:47
задача чума, пришлось просто скатать подчистую.... очень расстроен. Я даже решение толком не понял
Will Fight5 уровень
вчера, 18:36
Угум-с. Метод fight скопипастил из другой кошачьей битвы. Валидация прошла... Там правда сравнение шло через Integer.Compare... Но не суть
7Angel5 уровень, Харьков
вчера, 14:42
Самая дурацкая задача за все время, что до этого было, но мы ее побороли
if (cat == otherCat) {
    return false;
} else return cat > otherCat;
Питруха5 уровень
позавчера, 11:48
У меня была ошибка в конструкции if else if. Я писал if else if else if else if вместо if else if if else if
Vyacheslav Kirichenko5 уровень, Одесса
суббота, 14:50
Сама по себе задумка интересная. НО! Очень бредовое условие задачи - вот прям худшее, что я видел до всего этого.
Artem Ovsenev8 уровень
21 сентября, 14:07
не так сложно, если бы не запись public boolean fight(Cat anotherCat)...меня прям в ступор вогнала, хорошо в коментах обьяснили
Сергей Зимацкий6 уровень, Санкт-Петербург
18 сентября, 20:21
Сами своему же решению не удовлетворяют. (попробуйте в задании "Кошачья бойня" завести двух котов Cat cat1 = new Cat("Cat1", 1, 10, 100); Cat cat3 = new Cat("Cat3", 1, 10, 100); а потом заставить драться первого с третьим, а потом третьего с первым. System.out.println(cat1.fight(cat3)); System.out.println(cat3.fight(cat1));
Сергей Зимацкий6 уровень, Санкт-Петербург
18 сентября, 20:22
Для тех кто понимает как решается первая часть задачи но не понимает как корректно обрабатывать ничью, обьясню - они просто ждут true в случае ничьей с обеих сторон.
Илья Азанов7 уровень, Санкт-Петербург
22 сентября, 09:14
Не совсем так. Если false c обеих сторон, то тоже будет работать. Обрабатывать ничью можно сравнивая хэш коды. Но в этой задаче косяк, поэтому можно просто не заморачиваться, с требованием. Потому что валидатор не хочет верное решение принимать
Ivan Karenin5 уровень
вчера, 00:21
это решение не верно
Сергей Зимацкий6 уровень, Санкт-Петербург
18 сентября, 19:39
Изучил комменты, но совершенно не понимаю, как пихая двух разных котов с абсолютно одинаковыми параметрами разработчики собираются всегда у первого получать true, а у второго false. Разве что запоминая пути объектов и присваивая объектам с этим путём конкретное значение относительно другого объекта, с которым они уже сражались (и это как-то надо запоминать). Насколько я понял, их просто удовлетворяет вариант когда в случае ничьи оба возвращают true. Негодую, ведь мог бы написать с первого раза, а сам в итоге искал в комментах правильное решение.
Илья Азанов7 уровень, Санкт-Петербург
22 сентября, 09:02
return (score > 0); } // else return // anotherCat.hashCode() > this.hashCode(); Можно сравнить хэш код. У меня работает корректно, но не проходит валидацию) При этом если удалить, валидация проходит верно. Но условие выйгрышь первого = пройгрышь второго не выполняется
Никита Филипчук7 уровень, Одесса
17 сентября, 20:00
первая задача которую я честно скопипастил
Aleksei7 уровень
15 сентября, 13:24
Пришлось посидеть, но всё-таки допетрил) Чтобы выявить победителя по критериям, нужно эти самые "победные" критерии считать и куда-то начислять очки. Значит инициализируем две переменные с нулевыми значениями - в одну переменную будем начислять по одному очку за СВОИ победные критерии, а в другую - за ЧУЖИЕ победные критерии. Разумеется, если критерии равны, то и начислять ничего не нужно. Далее поочередно, при помощи
if ,,, else if
, начинаем сравнивать возраст, вес и силу. И начислять по одному очку - СЕБЕ или ЧУЖОМУ - в зависимости у кого критерии выше. Ну и в самом конце метода нам нужно выяснить победителя ПО ОЧКАМ, сравнив СВОИ очки с ЧУЖИМИ. Разумеется, вернуться должно либо
true
, либо
false
- т.к. метод
fight
имеет тип
boolean
. Если хотите увидеть результат воочию, просто в методе main создайте парочку Котов, пропишите каждому возраст, вес и силу и выводите на экран результат работы метода fight:
catOne.fight(catTwo);
Можете поиграться, изменяя Котам критерии, чтобы побеждал то один Кот, то другой, или была ничья :) Заодно убедитесь, что метод работает правильно.
Vitalii Priadko8 уровень, Харьков
14 сентября, 20:56
Вообще задача примитивная. Просто текст условия "по-дебильному написан" (с) Добкин/Кернес. "Если ничья и никто не выиграл, возвращаем либо true либо false, но должно выполняться условие: если cat1.fight(cat2) возвращает true, то cat2.fight(cat1) должен возвращать false." Т.е. это не означает, что указанные в процитированном предложении условия должны выполняться одновременно. Одновременно они не могут быть выполнены. Но если понять, что это абсолютно 2 разных требования, то всё становится на свои места: 1) если cat1.fight(cat2) возвращает true, то cat2.fight(cat1) должен возвращать false." думаю тут никаких проблем нет, всё просто. 2) Если ничья и никто не выиграл, возвращаем либо true либо false - тут тоже никаких проблем я полагаю. Но ***** таки есть мастера эпистолярного жанра на джава раш