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
🎓 Анонс задачи 51: Доставка заказов (решение будет в пятницу)

Алисе и Бобу нужно подготовить и доставить N заказов.

Дано время t1 - время упаковки посылки Алисой, время t2 - время доставки посылки Бобом.
Зная время t1, t2 вычислить наименьшее время, необходимое для выполнения всех заказов. За раз, Алиса и Боб могут доставить только один заказ.

Входные данные:
Дан двумерный массив, в первой строке – время упаковки каждого заказа Алисой, а во второй – время его доставки Бобом. (0 < t1, t2 ≤ 1000)

Написать функцию, ктр вернет наименьшее время доставки всех заказов.

Например,
4 4 30 6 2
5 1 4 30 3

Вывод:
47
🎓 Анонс задачи 52: Путевки (решение будет в понедельник)

Турфирма не успела продать N (N < 15) путёвок, срок действия которых уже наступил. Для минимизации убытков, было решено все такие путёвки, которым осталось Dk (Dk ≤ 30) дней, продавать по номинальной стоимости – по Ck (Ck ≤ 100) $ за день только за те дни, что остались со дня продажи (k = 1..n).

На какую наибольшую сумму можно реализовать эти путёвки, если каждый день продавать по одной путёвке?

Входные данные:

Даны два массива размера N. Первый массив содержит количество дней Dk, второ - стоимость дня Сk.

Написать функцию, ктр вернет максимальную сумму прибыли.

Пример:

[ 2, 3, 1, 4 ]

[ 37, 45, 46, 30 ]
🎓 Анонс задачи 53: Робот (решение будет в среду)

Бесконечная строка ширины 1 разбита на клетки размера 1х1. В одной клетке находится робот который может двигаться из одной клетки в другую. Его перемещения определяются программой, каждая команда в которой – это одна из трех больших латинских букв: L, R, S. Выполняя команду L, робот перемещается на одну клетку влево, команду R – на одну клетку вправо, а S – остается в той же самой клетке.

Входные данные:
Программа для робота – строка из символов L, R, S. Программа состоит не более чем из 10000 команд.

Вывести количество различных клеток, которые посетит робот, выполняя свою программу.

Например:
RRSRRLRR
6
🎓 Анонс задачи 54: Окружности (решение будет в пятницу)

Задачка для junior-ов, здесь нужно будет вспомнить геометрию и пару формул 📐

Даны 6 чисел X1, Y1, R1, X2, Y2, R2, где X1, Y1, X2, Y2 — координаты центров окружностей, а R1, R2 – их радиусы.

Необходимо определить количество точек пересечения двух окружностей.

Например:
0 0 5 5 0 5

Вывод:
2
Наконец-то разобрал ваши решения к 53й задаче: Робот.

Задача была несложная, но все равно спасибо всем, кто прислал свои варианты! 👍🏻

Кстати, судя по моей статистике (присланных от вас решений) Python на сегодня самый популярный язык программирования 😜

http://telegra.ph/Task-53-1-Robot-12-21
#junior

🎓 Анонс задачи 55: Квадраты (решение будет в понедельник)

Задан массив натуральных чисел, каждое значение это длина отрезка.

Необходимо выяснить какое наибольшее кол-во квадратов можно из них составить.

Сторона квадрата должна состоять только из одного отрезка.

Например,
[ 7, 7, 2, 7, 8, 7, 9, 7, 2 ]

Вывод: 1
🔥 @moninigor прислал нам крутое решение задачи 53: Робот.

Игорь не просто решил поставленную задачу, но и дополнил решение для случая, когда робот двигается по плоскости. Респект тебе, бро! 👍🏻

Итак, смотрим его решение 😜

http://telegra.ph/Task-53-2-Robot-12-24
🎓 Анонс задачи 56: Частичные суммы матрицы (решение будет в среду)

Дана числовая матрица Aij. Для всех i,j найдите частичные суммы:

sum(i,j) = SUM(a(k,t)), где k<=i,t<=j

Например,
1 2 3 4 5
5 4 3 2 1
2 3 1 5 4

Вывод:
1 3 6 10 15
6 12 18 24 30
8 17 24 35 45
🎓 Анонс задачи 57: Парковка (решение будет в пятницу)

Дана схема улицы, ктр содержит выезды (Exit - E), остановки (Stop - S) и пешеходные переходы (Crossing - C), остальные участки улицы обозначены на схеме дефисом (-).

Есть несколько правил парковки:
- нельзя парковать машину перед выездом
- нельзя парковать машину на остановке и менее чем в 10 метрах до нее, парковаться после остановки можно.
- нельзя парковать машину на пешеходном переходе и менее чем в 5 метрах до него и после него

Схема улицы разбита на участки длиной в 5 метров, 5 метров - длина парковки для автомобиля.

Написать программу, ктр для каждой схемы улицы выведет кол-во возможных парковочных мест.

Например,
1.
- - -S--C-E--С- -
Вывод: 4
2.
- -С--С--С--С- -
Вывод: 2
Выкладываю решения 57й задачи ("Парковка") от наших подписчиков. Хочу отдельно отметить @mrmeison и Антона.

Костя (@mrmeison) прислал два варианта решения, одно на JS, второе на Scala.

Антон прислал подробнейший разбор на языке Rust, также есть ссылка на тест.

http://telegra.ph/Task-57-1-Parkovka-12-28