UniLecs | Программирование
19.3K subscribers
965 photos
7 videos
3 files
1.23K links
🤘🏻Задачи, головоломки, книги и другие радости программиста.

Оглавление канала: telegra.ph/UniLecs-FAQ-09-30

Чат: @unilecs_chat
Бот: @unilecsBot
VK: vk.com/unilecs

Админ, сотрудничество: @dashalvv
Редактор: @amdavletov
Download Telegram
hanoi.gif
8.3 KB
Задача 41. Ханойские Башни
🎓 Анонс задачи 41. Ханойские башни (решение будет в пятницу)

Даны три стержня A, B, C, на один из которых нанизаны N колец, причём кольца отличаются размером и лежат меньшее на большем.
Задача состоит в том, чтобы перенести пирамиду из N колец за наименьшее число ходов на другой стержень. За один раз разрешается переносить только одно кольцо, причём нельзя класть большее кольцо на меньшее.

Напишите функцию разбора для N колец. Функция должна выводить на экран каждый шаг.
#c_sharp #tower_of_hanoi

Мы снова на связи!
Итак, выкладываю решение задачи про ханойские башни.
В конце разбора вы также можете найти ссылки на дополнительный материал по этой задаче.

Кстати, я немного ошибся с названием, классическая задача называется "Ханойская башня" :)

http://telegra.ph/Task-41-Hanojskie-bashni-11-02
🎓 Анонс задачи 42: Баланс скобок (решение будет в понедельник)

Дана строка, содержащая скобки ( ) и { }.

Скобочное выражение считается правильным, если:
1. для каждой открывающей скобки справа от нее есть соот-щая закрывающая скобка и наоборот.

2. соответствующие пары скобок разным типов правильно вложены друг в друга.

Длина строки не больше 128 символов.
Написать функцию, ктр проверит баланс скобок в заданной строке.

Например:

({(){}()})() - баланс скобок

({(}){}) - баланс скобок нарушен

P.S. присылайте ваши варианты решений этой задачи, лучшие работы я как обычно опубликую. Также не забываем оставлять комментарии или писать идею/ход решения в ваших работах.

Всем хороших выходных! 😜
🔥 Многие из вас прислали нам свои решения задачи 42.
И почти все из вас решили поставленную задачу верно. Но публикую я только одно решение!
И сейчас обьясню почему.

Вы почему то решили, что в строке содержатся ТОЛЬКО заданные скобки и написали алгоритм для рафинированного случая, когда строка состоит только из скобок.
Хотя я намеренно опустил в условии примеры с произвольным текстом.
Вы решили задачу не в общем случае, а в частном. Такой подход возможно где то прокатит на собеседовании, но не в реальной жизни. Да и зачастую интервьюер также спросит, что нужно добавить/исправить, чтобы решить задачу в общем случае.

Ребят, Спасибо вам за вашу активность, но будьте внимательны в решении задач!

http://telegra.ph/Task-42-1-Balans-skobok-11-20
🎓 Анонс задачи 43: Коробки (решение будет в среду)

На столе лежат коробка размера A1 × B1 × C1 и коробка размера A2 × B2 × C2.
Выясните можно ли одну из этих коробок положить в другую, если разрешены повороты коробок вокруг любого ребра на угол 90 градусов.

Входные данные, A1, B1, C1, A2, B2, C2 - натуральные числа (<= 100).

Напишите функцию, ктр проверит коробки:
1. Если коробки одинаковы, выведите "Boxes are equal"
2. Если первая коробка может быть положена во вторую, выведите "The first box is smaller than the second one"
3. Если вторая коробка может быть положена в первую, выведите "The first box is larger than the second one"
4. Иначе, выведите "Boxes are incomparable"

Например:

1. A1 = 1, B1 = 2, C1 = 3
A2 = 3, B2 = 2, C2 = 1
Boxes are equal

2. A1 = 2, B1 = 2, C1 = 3
A2 = 3, B2 = 2, C2 = 1
The first box is larger than the second one

3. A1 = 2, B1 = 2, C1 = 3
A2 = 3, B2 = 2, C2 = 3
The first box is smaller than the second one

4. A1 = 3, B1 = 4, C1 = 5
A2 = 2, B2 = 4, C2 = 6
Boxes are incomparable

Условие задачи взято с сайта acmp.ru
🎓 Анонс задачи 44: Часы с боем (решение будет в субботу)

Старинные часы бьют каждые полчаса.
Причем в начале каждого часа они бьют столько раз, сколько сейчас часов
(по 1 разу – в час ночи и в час дня, по 2 раза – в два часа ночи и в два часа дня и т.д., в полночь и в полдень они бьют, соответственно, по 12 раз).
И еще 1 раз они бьют в середине каждого часа.

Дан промежуток времени (известно, что прошло строго меньше 24 часов).
Моменты времени задаются двумя числами, первое число задает часы (от 0 до 23), второе – минуты (от 1 до 59, при этом оно не равно 30).

Определить сколько ударов сделали часы за это время.
#conf

Думаю многие заинтересуются, судя по темам неплохая конференция для программистов.
Спойлер: будет в Питере:)

https://events.epam.com/events/itsubbotnik-winter-2017
Задача 45: Положить плитку
🎓Анонс задачи 45: Положить плитку (решение будет во вторник)

Коридор NxM метров нужно застелить N плитками 1xM метров, чтобы не было не застеленной поверхности.

Нужно написать функцию, ктр найдет кол-во способов это сделать.

Например, для коридора 6x4 метра существует 4-е способа застелить плитками 1x4 (см.схематический рисунок выше)
#junior

🎓 Анонс задачи 46: Разворот числа (решение будет в пятницу)

Дано натуральное число N.

Напишите функцию для реверса этого числа. Функция должна вернуть число, нельзя выводить результат по одной цифре.

Условие:

Нельзя использовать циклы, преобразование в строки, списки/массивы.
#c_sharp #junior #recursion

Итак, решение 46й задачи: Разворот числа

P.S. мне многие прислали свои решения 46й задачи.
Ребят, спасибо вам огромное за вашу активность! 👍🏻
Но в этот раз не будет пользовательских решений, т.к. задача не сложная. А ее главная фишка в рекурсии.

http://telegra.ph/Task-46-Razvorot-chisla-11-20