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

  • 3
  • Недоступна
Тео Баслим, полковник в отставке, в юности участвовал в боях, и теперь ему стало скучно. Он узнал, что его соседка Светочка Валерьевна завела полтысячи котов, и решил предложить ей устраивать бескровные кошачьи бои (на кровные она бы не пошла). Дело за малым: нам нужно реализовать механизм драки котов в зависимости от их веса, возраста и силы.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (117)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Константин Петров5 уровень, Москва
3 часа назад
Если не искать аналогию в физическом мире и не принимать во внимание, что возраст, вес и сила по разному влияют на победу, то можно предложить совсем простой метод: public boolean fight(Cat anotherCat) { //напишите тут ваш код int me=0,another=0; if (this.age>anotherCat.age) me++; if (this.age<anotherCat.age) another++; if (this.weight>anotherCat.weight) me++; if (this.weight<anotherCat.weight) another++; if (this.strength>anotherCat.strength) me++; if (this.strength<anotherCat.strength) another++; return (me>another); }
Anonymous #10768035 уровень, Харьков
вторник, 18:36
Это издевательство. В условии сказано "Нужно сравнить каждый критерий по отдельности, и победителем будет тот, у которого больше "победивших" критериев", а в итоге нужно сравнить не по отдельности, а просто сумму критериев. И что именно значит такое размытое понятие, как "победивший" критерий?
Сергей7 уровень, Москва
понедельник, 20:04
рисуете 3 ифа с ретёрном тру и все, иначе фолс
Валентин9 уровень, Санкт-Петербург
17 мая, 11:07
Должно выполняться условие: если cat1.fight(cat2) возвращает true, то cat2.fight(cat1) должен возвращать false Это с какого перепуга?? Если у них ничья, то разве не оба должны возвращать false? В итоге валидатор принял это, я уверен в некорректности данного решения ( 2 2 2 и 1 38 1 - вернет неверный результат), но иду дальше, нет времени бодаться с валидатором. return this.age + this.weight + this.strength > anotherCat.age + anotherCat.weight + anotherCat.strength;
Константин Петров5 уровень, Москва
3 часа назад
Если cat1.fight(cat2) возвращает true, то это точно не ничья. А вот если cat1.fight(cat2) == false, то исход еще не ясен: это может быть как победа второго кота, так и ничья.
Egor Subbotyn9 уровень, Минск
16 мая, 15:28
чего то не лепиться . намекните плз.
GigaMax12 уровень
24 апреля, 10:31
Будьте внимательны! Я, например, немного заморочился и придумал две переменные, так сказать ранги котов:
int rangFighter = (this.weight * this.strength) * 1000 / ((8 - this.age) * (8 - this.age) + 1);
int rangAnotherCat = (anotherCat.weight * anotherCat.strength) * 1000 / ((8 - anotherCat.age) * (8 - anotherCat.age) +1);
смысл этого выражения, что самый опытный - зрелый кот в возрасте 8, опыт кота младше на год, будет такой же как и старше на год, как пример, при прочих равных весе и силе))) Суть в другом, если эти переменные объявлены как int - валидацию проходит, а если float или double - то нет. Не понял почему! ведь если сравнивать:
rangFighter > rangAnotherCat
- разницы не должно быть float, double или int тип переменных. Подскажите, почему так??? P.S: Причем я проверял, у меня все работает вне зависимости от типа переменных!!!
Глеб8 уровень, Москва
25 апреля, 11:50
потому что прверка это сравнение твоего кода, с кодом ответа, в котором тип инт предусмотрен, а дабл или флоат нет, я так понимаю.
GigaMax12 уровень
25 апреля, 14:45
значит коряво проверка написана)
Konstantyn Plachetko5 уровень
5 апреля, 10:13
подскажите где почитать про эти this и another, не могу понять механизм, ладно еще this, вроде просто указывает на то что нужно брать значения того объекта который вызывает метод, но another этот как берется??? как понять что это кот2, а не кот3 ... кот10 .... понятно что мы сами передаем какой кот в параметрах но объясните кто-нибудь саму конструкцию(Cat anotherCat)
Denis Fomin13 уровень, Казань
15 апреля, 15:40
у нас есть cat1 и cat2. cat1.fight(cat2) то есть нужно по заданию сравнить характеристики котов, this.age > anotherCat.age это условие сравнивает возраст cat1 (cat1.fight(cat2) с возрастом cat2( который указывается в аргументе функции fight (cat1.fight(cat2)). При такой структуре идет как бы сравнение cat1.age > cat2.age. Что то типа того)))
Денис8 уровень, Киев
4 апреля, 19:53
Плохо написанное условие + непонятно как работающий и какие значения проверяющий unit test == в пустую потраченные часы; Задачу решил суммированием всех параметров.
Mr R7 уровень, Санкт-Петербург
26 марта, 08:56
Да уж... Вот кто как не зубры-разработчики Java-Rush должны осознавать, что результат невнятного тз - хз ? :) Не возникало ранее проблем с задачами, благодаря хорошо и понятно прописанным условиям. А тут что? Задача оказалась элементарнее пареной репы и реализация не доставляла бы явных проблем, если бы вы грамотно сформулировали то, чего хотите от студента.
Илья6 уровень, Москва
15 мая, 09:47
+. Условия именно в этой задаче, действительно, стоит переписать. Первая задача за весь курс, у которой условия понятны не до конца
Николай Кушниров7 уровень, Киев
21 марта, 15:35
Алгоритм проверки задания некорректно сработал? Сделал первоначально условие сравнения : this.strength / (this.weight + this.age) c таким же соотношением для anotherCat - последнее условие не выполнилось. (хранил значения в переменных типа double) Поменял на (тупо) сумму всех параметров каждого кота для сравнения - последнее условие выполнилось. Как же так?
Dekastaer7 уровень
1 апреля, 04:55
Примерно аналогичная ситуация. Потратил все утро ломая голову. Не выполнялось последнее условие. Просто переписал код подобным образом. Суть осталась та же. И условие выполнилось.