Бонусное задание | 10 лекция | 10 уровень

Открыта

— Привет, Амиго! Что-то ты расслабился! Вот твои задания. Если вдруг возникнут трудности, то обращайся к коллегам, они точно помогут.

11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Минимум изменений
Как же всё-таки здорово, когда усилия оптимизированы! Только вот процесс оптимизации не всегда простой. Давайте потренируемся в нём, а заодно и сериализацию подучим вам нужно сделать возможной сериализацию некоего класса при минимальных изменениях кода. Вперёд!
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Десериализация
На вход подается поток, в который записан сериализованный объект класса A либо класса B. Десериализуйте объект в методе getOriginalObject так, чтобы в случае возникновения исключения было выведено сообщение на экран и возвращен null. Реализуйте интерфейс Serializable там, где необходимо.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Найти ошибки
Почему-то при сериализации/десериализации объекта класса B возникают ошибки. Найди проблему и исправь ее. Класс A не должен реализовывать интерфейсы Serializable и Externalizable. В сигнатуре класса В ошибки нет :). В методе main ошибок нет.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Исправить ошибку. Сериализация
После десериализации объекта класса Solution обнаружили, что данных в словаре [m] нет :( Исправить 1 ошибку.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Сериализация человека
И появился у нас человек. Класс Person, то бишь. И пришла пора его сериализовывать. И делать это нужно вам. Самым естественным образом. Если нужно, добавьте к некоторым полям модификатор transient. Но только если нужно.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Сериализация под запретом
Давайте поговорим про исключения, а именно — NotSerializableException . Именно с помощью этого длинного слова и соответствующей конструкции вам предстоит запретить сериализацию класса SubSolution. Только сигнатуры классов не меняйте, пожалуйста.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Переопределение сериализации в потоке
Вы уже привыкли к тому, что в мире есть масса неправильного и глючного кода? Вот вам ещё немного. Здесь сериализация и десериализация Solution не работает. Вам предстоит удовольствие исправить ошибки, не меняя сигнатуры методов и класса.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Делаем правильный вывод
У нас есть код. Но всё в нем не так… Нам нужно кое-что поменять. А именно — расставить обращения к методам суперкласса и модификаторы доступа так, чтобы получить вывод на экран определённого характера. Какого именно? Узнаете из задачи.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Знакомство с графами
Графья нынче не те пошли. Вот эти, плоские, с циклами и петлями. Благо хоть, ориентированные, а то совсем бы худо пришлось… И что нам с ними делать? А ничего. Просто изучать и надеяться на лучшее.

— Ты уже всё сделал? Вот тебе ещё и бонусные задания повышенной сложности:

11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Алгоритмы-числа
Ура, задачи на алгоритмы! Их очень любят резиденты планеты Линейный Хаос. И вы должны любить, по крайней мере, до того момента, как пройдёте пару-тройку собеседований. Итак, у вас есть число из некоторого количества чисел. Нужно найти все числа меньше N, которые удовлетворили бы некоторому критерию (о нём узнаете в самой задаче!).
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Алгоритмы-прямоугольники
И снова задача на алгоритмы, теперь о массивах, которые содержат прямоугольники. В этот раз всё небанально, так что, возможно, найдётся упорядоченный изоморф, который не сможет решить задачку о возврате количества прямоугольников. А ведь эти ребята только тем и занимаются, что упорядочиванием и сравнением.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Кроссворд
Нет, нам не придётся решать кроссворды. Нам нужно решить нетривиальную задачку про кроссворды. Есть двумерный массив, а в нём — слова, слова, слова. По горизонтали, по вертикали, по диагонали… Нужно найти все слова в массиве.
Комментарии (65)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Евгений20 уровень, Москва
позавчера, 15:47
Спасибо огромное команде javarush.ru за задачу 2025! Я на нее убил кучу времени, ее пока еще не принял валидатор, но зато есть чувство, что у меня получилось (получилось то, что я задумал). Для Long.MAX_VALUE требуется около 7 секунд и 50 чисел найдены, для Integer.MAX_VALUE - 277 мс. Надеюсь, удастся ее добить. Но даже если нет, можно с чистой совестью двигаться дальше. UPD: проверка прошла успешно, достаточно было при вызове метода обнулить статические переменные.
Taras Kutselya20 уровень
8 ноября, 09:55
С 2025 задачкой никак не могу придумать, как ускорить что бы обрабатывать Long.MAX_VALUE. Для значения N = Long.MAX_VALUE / 2 примерно 8 сек. Для N = Long.MAX_VALUE уже беда. Для long получается есть 50 чисел. Я нахожу 44 только :( дальше слишком возрастает время.
Sergey_Vladimirovich32 уровень, Минск
23 сентября, 06:50
Если кому-то мало задач, тренируйтесь на codewars.com. Так этих задач - тьма.
Евгений35 уровень
2 августа, 16:48
ВЫнос мозга в финале. Либо слишком просто, - модифицировать одну строку (или просто выполнить задание по пунктам), либо мучайся. Надеюсь, что в пока "призрачной" работе, практика сериализации будет частая и закрепится получше и надольше. Задачи как всегда сохранил. К просмотру решений, надеюсь буду возвращаться не раз. И Вам рекомендую + пишите комментарии, они помогут избежать пробелов. А судя по просмотру тем следующих квестов, знания об этом могут забыться уже на следующих уровнях. Задачи тут это жесть, за них огромный и жирный плюс разработчикам JavaRush. Теорию, увы черпаю из других источников, ибо здесь частенько многое непонятно. Но практика наше все, тут можно не спорить.
Евгений35 уровень
2 августа, 18:21
Полезное о графах: http://ccfit.nsu.ru/~deviv/courses/oop/java_ser_rus.html
Rihard198533 уровень
20 июля, 21:40
Уверен как всегда, насрешь ты мне в душу Бобров((
Evgenii Chentsov30 уровень
2 апреля, 12:30
Всем, кто парится над задачей 2025: Внимание! НЕ пользуйтесь потоками вывода JAVA API 8! Валидатор не примет!
Mariya Popkova28 уровень
9 марта, 11:19
2025 Наконец-то!!! Неделю мучила эту задачу. Решила, валидатор принял, какого было мое удивление, что среднее количество попыток для этой задачи: 4.81: Задача успешно прошла тестирование! Вы решили задачу лучше, чем 10% учеников. Вам удалось ее решить с 10 попытки. Среднее количество попыток для этой задачи 4.81. Всего эту задачу решили 3769 учеников. Неужели задача так легка?
Дмитрий36 уровень, Москва
13 марта, 08:34
Подскажите, сколько чисел принял валидатор как верное решение? 32 за 10 сек? (Мой алгоритм пока успевает найти 31 число за ~6,5 сек)
Mariya Popkova28 уровень
13 марта, 16:57
Integer.MAX_VALUE (это 31) - ищет за 0,77 с 94204591914L (это 40-ое число) - ищет за 1,8 c 35875699062250035L (это 46 число) - уже ищет за 35 с
NodeOne32 уровень
11 июня, 20:37
Integer.MAX_VALUE? написано N это LONG. т.е. Long.MAX_VALUE нужно искать? нет? Это вообще не честно тогда я столько времени убил считая до long.MAX_VALUE.
Username29 уровень
20 июня, 01:16
Так до Long или Int надо обеспечить поиск чисел?
NodeOne32 уровень
20 июня, 11:11
Почему то эта задача вообще мраком покрыта, такое ощущение что ее никто и не решил еще. Раньше, кстати, писали что ее в той версии в которой она щас есть Валидатор еще ни у кого не принял. Я уже забросил ее пока. результат 3,21Мб и 63 секунды до Integer.MAX_VALUE. (До лонг с полчаса ждал так и не дождался. Явно чего то не догоняю) Быстрее не удается. Решил что двух дней с нее хватит, поумнее буду вернусь.
Вадим Чубаров26 уровень
1 июля, 10:12
63 секунды для инт.макс велью - это результат доступных в нете математических ухищрений , массив степенных сумм, перебор по убыванию итд , его можно улучшить примерно до 45 - 52 сек, если запустить в 4 потока (разделить диапазон вычислений от 1 до N между ними) на 4 х ядерном проце (2 реальных + 2 виртуальных), но как ускорить" по честному" до 10 сек идей нет. Разве что получилось вычислить за 12,5 сек инт макс , но только при условии, что N должно быть больше 470 ... но это не совсем правильно
Victoria Sedletskaya23 уровень, Одесса
четверг, 19:41
у меня принял с 3й попытки. но просто у меня под конец выполнения задачи 3 часа не было интернета и я перепроверила все условия до того как отправить на валидацию)
Руслан Сафаргалеев30 уровень, Уфа
14 февраля, 11:27
Отличная статья по сериализации поможет почти во всех хадачах ;)
Ильяс28 уровень, Москва
12 февраля, 01:08
Дублирую свой коммент с нулевой лекции на эту статью. Поможет в решении задач.
Dudchenko Andrei26 уровень, Киев
7 февраля, 22:15
Мда. 2025 реально рулит. Пока лучшее, что мне удалось сделать - перебрать 100000000 значений за 7 секунд. Надо курить правильный перебор значений.
Mariya Popkova28 уровень
11 марта, 04:54
100000000 за 0.48 секунд
Станислав22 уровень, Москва
27 апреля, 09:23
100000000 за 219мс
Airat29 уровень, Уфа
22 июня, 10:43
100000000 за 110 мс
Максим32 уровень, Москва
1 августа, 16:36
100000000 за 1 мс