Всем привет.
Эту задачу я решил уже. Помощь мне не нужна.
Но считаю , что условие задачи поставлено некорректно.
И вот почему. Предположим, в одном файле встретятся несколько байт, которые будут встречаться чаще остальных. но равное кол-во раз.
Допустим один из файлов состоит из строчки "мама ест суп" ( или можно упростить этот файл до строчки "мама").
В этом файле 3 байта встречаются чаще остальных , и одинаковое число раз : м, а, с.
Результат по условию задачи мы должны записать в объект HashMap<String, Integer>
Такая постановка задачи сначала вогнала меня в ступор, потому-что ключами тут являются имена файлов, а ключи в hashMap уникальны. И я не смогу записать все эти три байта в результирующий мап.
Сделал я тупо, взяв первый максимальный байт из файла (тупо отсортировал мапу по числу включений, и взял первый ключ с максимальным числом включения байта в файл), скормил решение валидатору (и получил заветную медальку за бонусный блок задач), однако проблема в постановке задачи есть. Либо результат нужно писать не в Map, либо изменить условия задачи, например , что в результат записать первый из
максимально встретившихся байтов. Варианты есть.
ЗЫ
Писал об этом администрации, но мне было сказано оформить все это дело в виде вопроса, и потом уже выслать линк на вопрос администрации.
Сказано - сделано.
Хотелось бы услышать ответ администрации на этот вопрос. Может я ошибаюсь?
ЗЫЫ
Читал, что в мапе могут быть одинаковые ключи ( с одинаковым хэш-кодом, и тогда значения могут быть связным списком), но думаю , что это не тот случай.
Alexey Maleev
1 уровень
Вопрос по условию задачи
Обсуждается
Комментарии (11)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
11 ноября 2022, 16:26
Очень интересно, но условие задачи где? Что-то меня терзают смутные сомнения, что по условию требуется какая-то хешмапа. Особенно учитывая, что решать ее логично просто через массив.
Одинаковых ключей в мапе не может быть по определению, каждый ключ уникален. Но действительно хешкод может быть одинаковым у разных объектов, особенно если хеш функция написана плохо. Это не значит что объекты равны. Почитай про контракт equals и hashCode.
0
hidden #598481
11 ноября 2022, 16:41
Там действительно задача такая: вот вам мапа, запишите в нее по самому частому байту из каждого файла. Имя файла - ключ, байт - значение.
По решению пройдёт любой байт, являющийся самым частым, даже если таких несколько
![]()
0
Денис Enterprise Java Developer
11 ноября 2022, 16:43
Любопытно :) Не ожидал, ну с другой стороны, если нет четкого указания какой именно байт требуется в случае если таких несколько - наверное же любой подходит - это логично ведь :)
0
Alexey Maleev Software Developer
13 ноября 2022, 11:38
Нет, не логично. Если три байта встречаются максимальное число раз - то все эти три байта должны быть записаны в результат. Но в результат мы не можем ... я повторяюсь. -все есть в стартпосте.
Это некорректное условие задачи.
0
Денис Enterprise Java Developer
13 ноября 2022, 11:51
В условии формулировка в единственном числе, не множественном, так же нет отдельного пункта по обработке спорных кейсов. Значит это две вещи:
Либо в области применения этого кода не будет встречаться ситуация с несколькими максимальными байтами, либо можно использовать любой из них. Ни первое ни второе на кодовую базу не влияют никак.
Вот если бы валидатор не принимал решение с любым подходящим байтом это действительно была бы проблема и не корректное условие. В текущем виде - хз чего ты ожидаешь услышать :) Учись в логику сынок.
+1
Alexey Maleev Software Developer
14 ноября 2022, 05:17
Денис , ты уплоротый что ли? Или понять, то что русским языком написано, тебе не дано? Еще раз повторять свой стартпост не буду. Попробуй покурить его снова и понять, что же тут не так.
ЗЫ
Постановка задачи должна быть исчерпывающей и однозначной. Работодатель же тебе не выдает ТЗ, в котором написано: "сделай так, или как хочешь".... А потом, когда у кастомеров начинает подгорать от работы вашего глюкала, и директор предъявляет тебе претензии какого
рожна - ты достаешь ТЗ и говоришь: отвалите,тут нет четких формулировок? Или у вас так не принято всё-таки ?
+1
Денис Enterprise Java Developer
14 ноября 2022, 09:49
Постановка задачи должна быть исчерпывающей и однозначной.
Как говаривает мой лид: "Sweet summer child..."
Клиент действительно регулярно выдает ТЗ которое можно читать по всякому. Если везет это удается отловить до имплементации, если нет, потом приходится долго и нудно разбираться что на самом деле имелось в виду :)
Увы, мы живем не в идеальном мире. Заказчик частенько понятия не имеет чего он хочет, а выражается еще более витиевато. Если тебя так бомбит от простой задачки - представляю как тебя будет бомбить от реальных задач :)
И да, если в задаче не было написано то что от нее требуют на валидации я действительно говорю как есть, хотите поменять - создавайте дополнительную на то задачу.
0
KIRAРазработчик в prosv.ruExpert
14 ноября 2022, 13:53
А еще бывает так, что уточняешь у клиента какой то не точный момент и в ответ "ну сделайте как лучше, вы же программисты". Видимо он еще не сталкивался
0
Денис Enterprise Java Developer
14 ноября 2022, 13:58
"Сделайте как раньше" - любимая фраза прошлого БА.
0
Alexey Maleev Software Developer
15 ноября 2022, 03:27
Денис, я программирую за деньги с конца прошлого века родной. В том числе и поэтому меня бомбит, как ты выражаешься, от неточностей, двусмысленностей, и как тут пишут "сделайте как-нибудь".
Именно поэтому ты уточняешь все детали ТЗ до начала реализации, именно поэтому у тебя есть на любой вопрос начальника: "какого хера ты сделал так?", как минимум его письмо, в котором написано сделать так.
Если в ТЗ написано - делайте как хотите, работаем по этому ТЗ. Потом все вопросы будут закрыты наличием этого ТЗ. Переделывать по новому ТЗ? Да не вопрос, переделаем. Есть же ТЗ, которым мы потом себе зад прикроем.
Тут же иная ситуация, но похоже я не смогу до вас донести, что не может быть белое черным. Что есть противоречие в постановке задачи. Что условие не говорит мне как реализовывать описанную мной ситуацию. Что я не смогу записать в результирующую мапу несколько значений из одного файла, если таковые встретятся, и постановка задачи не говорит , что делать в этом случае.
Но другими словами я до вас этого донести не смогу, а этих слов вы понять не можете.
0
Денис Enterprise Java Developer
15 ноября 2022, 08:40
Очень рад, что вам удается жить в розовых очках и в идеальном мире :) Мои задачи несколько более расплывчаты, но меня это вполне устраивает.
Я могу сказать только, что мир программирования гораздо более разнообразная и живая среда чем вам хочется, не всегда удается сидеть в НИИ Цитологии и генетики или оператором ЭВМ на заводе "Светлый путь". Бизнес сейчас строится на модели бери больше - кидай дальше. Деливери фичи приносит больше денег чем ее вылизывание, по этому так активно развился подход Аджайл и вот это вот все. Задача дев тимы успеть выкатить фичу и принести прибыль.
Я не называю белое черным, я называю норму - нормой. Да, такие условия это норма в современных реалиях, я бы даже сказал очень не плохо. Суть работы программиста во многом и есть переварить бизнес требования и выдать рабочее решение, за это и деньги платят приличные.
0