Бонусное задание | 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 лекция
Недоступна
Кроссворд
Нет, нам не придётся решать кроссворды. Нам нужно решить нетривиальную задачку про кроссворды. Есть двумерный массив, а в нём — слова, слова, слова. По горизонтали, по вертикали, по диагонали… Нужно найти все слова в массиве.
Комментарии (68)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Andrii Gorshunov26 уровень
1 января, 15:19
Десереализация. Помагает только catch (Exception e){return null;} Найти ошибки. Помогло объяснение тут https://javarush.ru/help/13389 (коммент) Сериализация под запретом. Вместо добавлять в класс несереализируемые объекты типа Thread например, они хотят написать свои методы readObject, WriteObject которые throw new NotSerializableException. Странный подход. Однако становится очевидным после прочтнения этого материла http://ccfit.nsu.ru/~deviv/courses/oop/java_ser_rus.html Знакомство с графами. Решается легко. Под графом, как я понял, понимается вся сетка связей данного объекта с другими объектами. То есть все возможные цепочки(как дерево). Дело в том, что при сериализации, все ссылки данного объекта на другие объекты сохраняются при записи автоматически. То есть после десереализации, они сами будут снова указывать на все те объекты, которые были до сериализации. А если это дерево объектов, типа Дед, Дочь-Сын, Внуки... и мы сохраним в файл или ByteArrayOutpusStream нашего Деда, то после восстановления Деда, внуки и дети они тоже воссоздадутся. Здесь больше инфо https://javarush.ru/tasks/com.javarush.task.task20.task2024 по данной задаче Вообще я так понял, что тут задачи уже достаточно сложные из-за того, что конец квеста Java Core. Поздравляем друг друга с завершением и двигаемся дальше. Сложные задачи оставил на потом.
Bahis35 уровень, Москва
29 ноября 2018, 20:48
Задача 2022 проходит тестирование, но при запуске валятся NotActiveExveption!
Andrii Gorshunov26 уровень
1 января, 17:04
подтверждаю
Евгений29 уровень, Москва
19 ноября 2018, 15:47
Спасибо огромное команде javarush.ru за задачу 2025! Я на нее убил кучу времени, ее пока еще не принял валидатор, но зато есть чувство, что у меня получилось (получилось то, что я задумал). Для Long.MAX_VALUE требуется около 7 секунд и 50 чисел найдены, для Integer.MAX_VALUE - 277 мс. Надеюсь, удастся ее добить. Но даже если нет, можно с чистой совестью двигаться дальше. UPD: проверка прошла успешно, достаточно было при вызове метода обнулить статические переменные.
Taras Kutselya22 уровень
8 ноября 2018, 09:55
С 2025 задачкой никак не могу придумать, как ускорить что бы обрабатывать Long.MAX_VALUE. Для значения N = Long.MAX_VALUE / 2 примерно 8 сек. Для N = Long.MAX_VALUE уже беда. Для long получается есть 50 чисел. Я нахожу 44 только :( дальше слишком возрастает время.
Sergey_Vladimirovich32 уровень, Минск
23 сентября 2018, 06:50
Если кому-то мало задач, тренируйтесь на codewars.com. Так этих задач - тьма.
Евгений35 уровень
2 августа 2018, 16:48
ВЫнос мозга в финале. Либо слишком просто, - модифицировать одну строку (или просто выполнить задание по пунктам), либо мучайся. Надеюсь, что в пока "призрачной" работе, практика сериализации будет частая и закрепится получше и надольше. Задачи как всегда сохранил. К просмотру решений, надеюсь буду возвращаться не раз. И Вам рекомендую + пишите комментарии, они помогут избежать пробелов. А судя по просмотру тем следующих квестов, знания об этом могут забыться уже на следующих уровнях. Задачи тут это жесть, за них огромный и жирный плюс разработчикам JavaRush. Теорию, увы черпаю из других источников, ибо здесь частенько многое непонятно. Но практика наше все, тут можно не спорить.
Евгений35 уровень
2 августа 2018, 18:21
Полезное о графах: http://ccfit.nsu.ru/~deviv/courses/oop/java_ser_rus.html
Rihard198533 уровень
20 июля 2018, 21:40
Уверен как всегда, насрешь ты мне в душу Бобров((
Evgenii Chentsov30 уровень
2 апреля 2018, 12:30
Всем, кто парится над задачей 2025: Внимание! НЕ пользуйтесь потоками вывода JAVA API 8! Валидатор не примет!
Mariya Popkova28 уровень
9 марта 2018, 11:19
2025 Наконец-то!!! Неделю мучила эту задачу. Решила, валидатор принял, какого было мое удивление, что среднее количество попыток для этой задачи: 4.81: Задача успешно прошла тестирование! Вы решили задачу лучше, чем 10% учеников. Вам удалось ее решить с 10 попытки. Среднее количество попыток для этой задачи 4.81. Всего эту задачу решили 3769 учеников. Неужели задача так легка?
Дмитрий41 уровень, Москва
13 марта 2018, 08:34
Подскажите, сколько чисел принял валидатор как верное решение? 32 за 10 сек? (Мой алгоритм пока успевает найти 31 число за ~6,5 сек)
Mariya Popkova28 уровень
13 марта 2018, 16:57
Integer.MAX_VALUE (это 31) - ищет за 0,77 с 94204591914L (это 40-ое число) - ищет за 1,8 c 35875699062250035L (это 46 число) - уже ищет за 35 с
NodeOne36 уровень
11 июня 2018, 20:37
Integer.MAX_VALUE? написано N это LONG. т.е. Long.MAX_VALUE нужно искать? нет? Это вообще не честно тогда я столько времени убил считая до long.MAX_VALUE.
Username29 уровень
20 июня 2018, 01:16
Так до Long или Int надо обеспечить поиск чисел?
NodeOne36 уровень
20 июня 2018, 11:11
Почему то эта задача вообще мраком покрыта, такое ощущение что ее никто и не решил еще. Раньше, кстати, писали что ее в той версии в которой она щас есть Валидатор еще ни у кого не принял. Я уже забросил ее пока. результат 3,21Мб и 63 секунды до Integer.MAX_VALUE. (До лонг с полчаса ждал так и не дождался. Явно чего то не догоняю) Быстрее не удается. Решил что двух дней с нее хватит, поумнее буду вернусь.
Вадим Чубаров27 уровень
1 июля 2018, 10:12
63 секунды для инт.макс велью - это результат доступных в нете математических ухищрений , массив степенных сумм, перебор по убыванию итд , его можно улучшить примерно до 45 - 52 сек, если запустить в 4 потока (разделить диапазон вычислений от 1 до N между ними) на 4 х ядерном проце (2 реальных + 2 виртуальных), но как ускорить" по честному" до 10 сек идей нет. Разве что получилось вычислить за 12,5 сек инт макс , но только при условии, что N должно быть больше 470 ... но это не совсем правильно
Victoria Sedletskaya32 уровень, Одесса
15 ноября 2018, 19:41
у меня принял с 3й попытки. но просто у меня под конец выполнения задачи 3 часа не было интернета и я перепроверила все условия до того как отправить на валидацию)
Руслан Сафаргалеев30 уровень, Уфа
14 февраля 2018, 11:27
Отличная статья по сериализации поможет почти во всех хадачах ;)