Итоговые задачи для программистов

Открыта

— Здорово, боец!

— Здравия желаю, капитан Бобров!

— У меня для тебя шикарная новость. Вот тебе задания для закрепления полученных навыков. Выполняй их каждый день, и твои навыки будут расти с неимоверной скоростью. Они специально разработаны для выполнения их в Intellij IDEA.

5
Задача
Java Syntax,  6 уровень,  11 лекция
Недоступна
Кот и статика
Солнце встает. Задачи всё сложнее: изучаем static’и. В этот раз нам нужно в классе Cat создать статическую переменную catCount и конструктор [public Cat()].Пусть при каждом создании кота (нового объекта Cat) статическая переменная catCount увеличивается на 1. Нам нужно создать десяток котов и вывести значение переменной catCount на экран.
10
Задача
Java Syntax,  6 уровень,  11 лекция
Недоступна
Статические коты
Статический кот — всем котам кот. Поэтому в этой задаче в классе Cat добавляем статическую переменную cats. Пусть при каждом создании кота (нового объекта Cat) в переменную cats добавляется этот новый кот. Нам нужно создать 10 объектов Cat, а затем метод printCats должен выводить всех котов на экран.
2
Задача
Java Syntax,  6 уровень,  11 лекция
Недоступна
Феншуй и статики
Специалист по программистскому феншую несколько секунд пристально изучал код программы, затем приподнял одну бровь, кивнул и торжественно произнес: «Я увидел ошибочность расположения модификаторов в этом коде. Нужно переставить один модификатор static. Тогда всё будет по феншую. Пример скомпилируется. Гармония восстановится».
5
Задача
Java Syntax,  6 уровень,  11 лекция
Недоступна
Минимальное число статиков
Разминать мозги полезно, а делать это лучше всего с помощью головоломок. Но поскольку мы — программисты, головоломки мы помещаем прямо в код. Вот, держите: в коде этой задачки нужно расставить минимальное количество static’ов так, чтобы код начал работать и программа успешно завершилась.
5
Задача
Java Syntax,  6 уровень,  11 лекция
Недоступна
Блокнот для новых идей
Крутые идеи нужно записывать, они забываются очень быстро. Для этого в классе Solution создадим статический класс Idea, а в нем — метод public String getDescription(), который будет возвращать любой непустой текст. Затем создадим статический метод public void printIdea(Idea idea) — он выведет описание нашей идеи на экран.
2
Задача
Java Syntax,  6 уровень,  11 лекция
Недоступна
KissMyShinyMetalAss
На планете Диких Роботов никого не учат ни писать, ни программировать. Поэтому когда робота А. забрали из его естественной среды и перевезли на космокорабль, оказалось, что он не может даже подписать контракт. Поможем роботу А.: создадим для него класс KissMyShinyMetalAss для подписывания контрактов.
2
Задача
Java Syntax,  6 уровень,  11 лекция
Недоступна
Три статические переменные name
Статические переменные несут огромную пользу, если ими не злоупотреблять. И вообще… Их нужно понимать, холить и лелеять. Сейчас вы получите код, в котором уже реализованы кое-какие классы. Ваша задача состоит в том, чтобы дописать в код три public статические переменные: String Solution.name, String Cat.name, String Dog.name.

— Те задания были для духов. Для дедушек я добавил бонусные задания повышенной сложности. Только для старослужащих.

2
Задача
Java Syntax,  6 уровень,  11 лекция
Недоступна
Исправляем ошибки юности
Бывает, работает кодер, такой на проекте, старается. Открывает чужой модуль, а тот не только не работает правильно, но и не компилируется. Этого не избежать в компаниях, где больше одного кодера. Поэтому с младых ногтей приучаемся читать чужой код и выискивать в нём ошибки. Заставьте эту программу вывести максимальное число из двух введенных.
10
Задача
Java Syntax,  6 уровень,  11 лекция
Недоступна
Родственные связи кошек
Готовая задача: у кошки есть имя и кошка-мама. Создать класс, который это описывает. Создать два объекта: кошку-дочь и кошку-маму. Вывести их на экран. Новая задача: У каждой кошки есть имя, кот-папа и кошка-мама. Изменить Cat так, чтобы он мог описать эту ситуацию. Создать 6 объектов: дедушку (папин папа), бабушку (мамина мама), папу, маму, сына, дочь.
10
Задача
Java Syntax,  6 уровень,  11 лекция
Недоступна
Числа по возрастанию
Возможно, вы уже слышали об упорядоченных изоморфах с планеты Линейный Хаос — изобретателях всех методов сортировки. Сегодня нужно решить задачу от них: пользователь вводит с клавиатуры 5 чисел, метод сортирует числа по возрастанию, а другой метод — выводит их на экран. Осилите? Если да, возможно, вам следует посетить Линейный Хаос!
Комментарии (352)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Anonymous #10768036 уровень, Харьков
вчера, 00:32
Про Минимальное число статиков. Задача огонь. Вспоминаем суть лекций про static: -Суть#0 - есть сам класс, а есть созданные из него объекты класса. У класса есть свои методы/переменные (static), а у объектов свои методы/переменные (обычные) -Суть#1 - методы/переменные самого класса "живут" вне объектов, поэтому static методы/переменные МОЖНО вызывать без создания объектов класса -Суть#2 - если static метод вызывает другой метод, то этот "другой" метод должен быть static. Чтобы вызвать обычный метод (т.е. метод объекта) - нужно создать этот объект -Суть#3 - static переменная создаётся только один раз и она одна на все объекты класса. Обычная же переменная "привязана" к объекту класса, и она создаётся каждый раз при создании объекта Объяснение: 1. main всегда static. Он должен вызвать метод method1. Но у main не получится, т.к. method1 неstatic. Поэтому делаем method1 static. 2. Далее method1 должен вызвать method2. Т.к. method1 теперь static, то и method2 тоже должен быть static. 3. Затем static method2 создает объект класса Solution, а обычный метод method3 вызывается уже из этого объекта. Тут ОК. 4. Потом method3 вызывает method4. Мethod3 обычный, поэтому тут тоже всё нормально. В данном случае method4 вызывается из объекта, т.к. method4 неstatic. 5. Далее method4 инкрементирует неstatic (!) переменную step. Т.к. step это примитив int, то при объявлении step равна 0, а после инкремента равна 1-це. Затем цикл for выводит на экран стек. Далее программа завершилась бы оператором return, но "if (step > 1)" не выполняется, т.к. step == 1. Поэтому код выполняется дальше, а дальше - "main(null)", снова вызывается "public static void main", создаётся объект класса и переменная step. Она снова равна 0, затем 1-це, return недостижим. Всё из-за того, что step - нестатическая, т.е. создаётся заново для каждого нового объекта класса Solution. Поэтому решение - сделать step переменной static. Тогда на втором круге step станет равна 2-ум и код завершится оператором return.
Artem Diachenko7 уровень, Днепр
четверг, 12:53
для предпоследней задачи мне пригодилось найденное методом тыка знание, что если в конструктор передать вместо ссылки на объект null, то это работает, и это можно использовать далее в проверке родителя/родителей.
Artem Diachenko7 уровень, Днепр
четверг, 10:52
Но это же тупо, добавлять котов в методе main(), если можно в конструкторе написать cats.add(this); И это работает. Однако валидатор забраковал. Естественно, ведь нужно внимательно читать условие. Так вот, неужели это правильно, в main() вручную добавлять котов после создания? Cat cat1 = new Cat(); cats.add(cat1); ... Cat cat10 = new Cat(); cats.add(cat10); Это решение валидатор принял, но у меня глаза кровоточат от такого говнокода. Может есть что-то, что я пропустил? Ау, коллеги, подскажите.
Игорь Мерзляков7 уровень, Москва
вчера, 14:44
Спасибо, по твоему совету написал, приняло.
Aleksei7 уровень
вторник, 16:04
Привет. Кто может доступным языком объяснить решение задачи "Минимальное число статиков"? Я, конечно, сделал, но больше руководствовался логикой и методом тыка, чем пониманием того, что делаю. Дополнительные статьи почитал, но пока что все равно не очень понимаю.
Anonymous #10768036 уровень, Харьков
вчера, 00:29
Задача огонь, в ней вся соль лекций про static методы/переменные. Вспомним суть: -Суть#0 - есть сам класс, а есть созданные из него объекты класса. У класса есть свои методы/переменные (static), а у объектов свои методы/переменные (обычные) -Суть#1 - методы/переменные самого класса "живут" вне объектов, поэтому static методы/переменные МОЖНО вызывать без создания объектов класса -Суть#2 - если static метод вызывает другой метод, то этот "другой" метод должен быть static. Чтобы вызвать обычный метод (т.е. метод объекта) - нужно создать этот объект -Суть#3 - static переменная создаётся только один раз и она одна на все объекты класса. Обычная же переменная "привязана" к объекту класса, и она создаётся каждый раз при создании объекта Объяснение: 1. main всегда static. Он должен вызвать метод method1. Но у main не получится, т.к. method1 неstatic. Поэтому делаем method1 static. 2. Далее method1 должен вызвать method2. Т.к. method1 теперь static, то и method2 тоже должен быть static. 3. Затем static method2 создает объект класса Solution, а обычный метод method3 вызывается уже из этого объекта. Тут ОК. 4. Потом method3 вызывает method4. Мethod3 обычный, поэтому тут тоже всё нормально. В данном случае method4 вызывается из объекта, т.к. method4 неstatic. 5. Далее method4 инкрементирует неstatic (!) переменную step. Т.к. step это примитив int, то при объявлении step равна 0, а после инкремента равна 1-це. Затем цикл for выводит на экран стек. Далее программа завершилась бы оператором return, но "if (step > 1)" не выполняется, т.к. step == 1. Поэтому код выполняется дальше, а дальше - "main(null)", снова вызывается "public static void main", создаётся объект класса и переменная step. Она снова равна 0, затем 1-це, return недостижим. Всё из-за того, что step - нестатическая, т.е. создаётся заново для каждого нового объекта класса Solution. Поэтому решение - сделать step переменной static. Тогда на втором круге step станет равна 2-ум и код завершится оператором return.
Aleksei7 уровень
вчера, 09:43
Большое спасибо! Очень доходчивое и грамотное объяснение, теперь все пробелы заполнены.
Дмитрий9 уровень, Токио
25 сентября, 14:41
Я не понимаю, какой смысл выкладывания задачи, которая находится за гранью знаний? Сейчас мне ответят - так ты гугли, так я и могу. Я, прогуглив, решил задачу, но я не понял, как это работает. Я готов гуглить, когда мы можем сделать задачу изученными методами, но громоздкой. В этом случае найдя немного более изящное решение, которое дополняет приобретенные знания.
Дмитрий8 уровень, Москва
26 сентября, 15:14
Hard задачи в первую очередь нацелены на тех, кто уже знает больше чем обычно( например из книг ). Поэтому если хочешь профит с этих задач, как мне кажется, лучше их оставить на потом.
Дмитрий9 уровень, Токио
27 сентября, 12:44
Возможно так и есть, но какой смысл тогда выкладывать их тут? Если человек знает больше, чем обычно какой смысл ему решать задачи 6 уровня, пусть решает 8го.
Дмитрий8 уровень, Москва
27 сентября, 21:13
Так может он только начинает тут проходить, кто ему сразу к задачам 8го уровня даст доступ?
Юрий13 уровень, Москва
27 сентября, 23:07
в который раз соглашусь. жаль что курс от наших пожеланий не изменится. надеюсь что новички хотя бы не буду думать что они глупы, а просто поймут что этот материал еще не давали.
Дмитрий9 уровень, Токио
28 сентября, 03:37
Дмитрий, так вы не находите тут противоречий? Если он начинает проходить курс, так пусть его проходит вместе со всеми. Если человек тут учится ради того, что у него появляется темная материя и растут уровно, то к какому результату он хочет прийти? Поймите, что сложность задач можно увеличить и в рамках пройденного материала. Нет смысла в 6-й уровень запихивать 9-й. Кто шарит на уровне 9-го, тот задачи 6-го сделает за 10 мин, теорию читать не будет и за 3-4 дня достигнет своего 9-го. Я только за то, чтобы задачи были сложнее, но именно в рамках пройденного курса с углублением каких-то специфичных знаний по курсу. Возможно, когда мои знания и навыки уйдут вперед и я перечитаю данный пост, я изменю свое мнение, но пока вот так))
Дмитрий8 уровень, Москва
28 сентября, 12:30
Все что я писал, сугубо мои догадки. А какие идеи были в головах разработчиков, и как все это должно работать, мне не известно :)
Eugene Semenov9 уровень, Санкт-Петербург
29 сентября, 18:12
возможно, что задачи можно решить и не забегая вперед. я знаю о существовании массивов, естественно, что буду рыть в этом направлении. другие не в курсе, возможно их вариант решения будет раздутым кодом, но только с использованием материала из пройденного.
Дмитрий9 уровень, Токио
30 сентября, 00:34
Евгений, я говорю про задачи, которые никак не решить пройденным материалом. Валидатор не пропустит. К примеру, была задача с классом Array. Его было нельзя не использовать, а по другому не решить
Александр Зацарный11 уровень, Днепр
1 октября, 11:18
смысл в твоей честности к себе, эти решения никому, кроме тебя не нужны, Хочешь решай сейчас как умеешь, Хочешь читай доп. материал и уж если взялся делать задачу по методу который не знаешь, то лучше разберись че да как работает и только потом используй. Самообучегие оно такое!!!
Дмитрий9 уровень, Токио
2 октября, 01:23
Александр, вы были бы правы на 100%, если забыть, что здесь выстроенный учебный процесс, а не самообучение. Учебный процесс на то и процесс, чтобы систематизировать знания и правильно подавать материал для наиболее эффективного обучения. Включая и самостоятельное изучение тем.
Рита8 уровень, Санкт-Петербург
2 октября, 10:21
Ты, возможно, пропустил лекцию с объяснением принципов курса javarush. Принцип такой: сначала дают немножко теории, потом задачки более сложные, чтобы ты залез в гугл и нашел информацию, с помощью которой ты решишь задачу, а после тебе дают теорию на закрепление данной информации и еще до кучи задачек на эту тему. Таким образом, ты три раза касаешься темы и лучше усваиваешь материал.
Islam Laipanov16 уровень, Москва
22 сентября, 18:42
поделитесь, пожалуйста, кодом сортировки 5 чисел по возрастанию без использования массивов и циклов. хочется это видеть
Islam Laipanov16 уровень, Москва
22 сентября, 19:37
прекрасно!
Алексей10 уровень, Полысаево
27 сентября, 03:07
Это крайне интересная задача. Не все-же конструкторы из лего собирать, пора и сам лего производить)).
Алексей10 уровень, Полысаево
27 сентября, 03:44
Код с одним while и пятью If отправил в личку. Сортирует в четыре прохода, без массивов, без каких либо функций. Только цикл, если, и больше, меньше, больше - равно))) А циклы нам никто не запрещал, и мы ими пользоваться умеем)
Кирилл7 уровень
4 часа назад
Также решил ) кстати, если подумать, то тут получается аналогия с массивом, только вместо элеметов массива служат переменные целого типа )
Евг Вел7 уровень, Харьков
22 сентября, 17:56
Ужас! Очень тяжко идут задачи. Часто понимание приходит на мгновение, если им не воспользовался то считай что день пропал
artemoon1248 уровень, Казань
17 сентября, 17:20
Чувствую себя тупым (
Юрий13 уровень, Москва
8 сентября, 15:57
вот в чем смысл давать такие задания про массив? тяжело было чтоли сделать урок с объяснением синтаксиса, что за бред
Юрий13 уровень, Москва
8 сентября, 15:58
получается, нам лениво объяснять так чтоб поняли, поэтому вы сами погуглите и разберитесь, а мы вам задачек посоставляем на другие темы.
Fly_mila7 уровень, Кубань
16 сентября, 13:32
в реальной работе информацию никто разжевывать не будет) привыкайте)
Юрий13 уровень, Москва
16 сентября, 20:12
причем тут разжевывать. смысл в том что человек не в состоянии использовать самостоятельно область о которой он понятия не имеет. плюсом в начале было озвучено стараться не гуглить. и можно впасть в ступор. гуглить нельзя, но полученных ранее знаний фактически не хватает для решения проблемы. но ты то об этом не знаешь. ты думаешь что у тебя мозгов не хватает использовать то что есть. в работе ты сразу идешь и гуглишь и копипастишь нужные методы, уже написанные кем-то ранее, корректируя под себя.
Алексей Татаринцев7 уровень, Дальнегорск
19 сентября, 13:01
Наверное вы неправильно поняли. Гуглите и это поощряется, ведь кадждый программист должен в первую очередь уметь гуглить. Главное искать не ответ, а информацию по теме
Юрий13 уровень, Москва
22 сентября, 14:44
тогда так и нужно формулировать мысль создателям. это вы наверное неправильно поняли посыл создателей. я четко помню формулировку, что гуглить нужно в последнюю очередь. сначала пытаться решить своими силами задачу (то бишь основываясь на той информации которую нам дали ранее).
Татьяна10 уровень, Днепр
26 сентября, 14:13
Тут где-то была лекция на эту тему, о том, что вам даются задачи с забегом наперед, - если вы не знаете как их решать вы можете попробовать узнать самостоятельно и решить - это готовит вас к будущему, когда на работе так часто придется делать, но в самом начале, если вы полный новичок - то не стоит этого делать - это демотивирует, просто оставьте эту задачу на будущее. Обычно сразу следующий новый материал объясняет именно то, что не получилось в этой задаче. Так и здесь 7 уровень - это массивы, я еще его не прошла, но могу сказать, что задача с сортировкой легко решается именно с массивами. Отложите эту задачу до конца 7 уровня, даже если там не будет четкого ответа, как это решить, у вас будет гораздо больше шансов найти ответ самостоятельно. Сложные задачи - это задачи на будущее, не концентрируйтесь на неудачах и сложностях - проходите вперед и вернитесь решить задачу позже. ИМХО Количество черной материи с запасом - поэтому, такой подход предусмотрен курсом
Алексей10 уровень, Полысаево
27 сентября, 03:47
В какой задаче есть массив? В сортировке что-ли? Нет там никакого массива. Один вайл, пять иф, больше, меньше, больше-равно и всё. в четыре прохода сортируются любые значения. Прекратите панику разводить -там тупо сравнения и нет ничего не изученного. Задача для тренировки мозгов - вам нужно самому придумать алгоритм сортировки. P.s. Нашел про массив, статистика и коты. Ну загуглить, значит, на то она и HARD, задание действительно сложное, требует прочтения следующей лекции.)
Mouse12 уровень, Ust Kamenogorsk
7 сентября, 08:30
Последнюю делал через алгоритм "сортировка выбором", получил удовольствие :D
Серёжа8 уровень, Новосибирск
11 сентября, 15:06
сделал через стандартный метод Arrays.sort :D сортировку выбором изучал, но нужно знания обновить )