Proglib.academy | IT-курсы
3.74K subscribers
1.98K photos
65 videos
14 files
1.87K links
Онлайн-курсы для программистов от создателей «Библиотеки программиста».

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/9f60aed6

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
🤯🤯🤯 Задачка на IT тематику.

Задача про слияние промежутков в календаре.

Предположим, компания, в которой вы работаете, разрабатывает электронный календарь. В календаре есть функция, показывающая, когда различные команды программистов будут заняты на какой-либо встрече.

Те периоды, когда команда занята, на календаре отмечены как диапазоны времени, например, с 10:00 до 12:30 или с 12:30 до 13:00. В разрабатываемой программе промежуток времени представлен в виде кортежей из двух целых чисел. Число означает номер 30-минутного блока, который идет после 9:00 утра. Например, кортеж (2, 4) означает диапазон с 10:00 до 11:00, а (0, 1) — это промежуток 9:00-9:30.

Вам нужно написать функцию, которая должна упростить вывод информации таким образом, что если команда занята в промежутках с 10:00 до 12:30 и с 12:30 до 13:00, то это отображалось как 10:00?13:00. Например: на входе вашей функции неупорядоченный массив из кортежей [(0, 1), (3, 5), (4, 8), (10, 12), (9, 10)], а на выходе вы должны получить упорядоченный массив [(0, 1), (3, 8), (9, 12)].

В будущем планируется внести изменения в программу, где вместо 30-минутных блоков будут минутные, как это реализовано в представлении Unix-времени. С учетом этого изменения нужно, чтобы ваша функция уже сейчас могла работать с большими числами. Еще не забудьте, что кортеж — это такой тип данных, в котором содержимое переменной невозможно изменять после ее создания.
👍1
Алгоритмы в PHP: Deques (циклические буферы и связанные списки)

Читать
🎙🎙🎙 Подкаст на тему: Продуктивность разработчика

На продуктивность можно смотреть по-разному – через призму количества закрытых задач, достигнутых результатов, собственного wellbeing. В этом выпуске мы с Кириллом Мокевниным обсуждаем продуктивность владения инструментами разработки, достижение которой позволит вам увереннее входить в состояние потока и дольше в нем оставаться. Слепая печать, горячие клавиши, терминал, Vim и куча других способов оптимизировать свою рутину.

👉🏻 Яндекс-музыка
👉🏻 Apple-подкаст
👉🏻 Google-подкаст
👉🏻 SoundCloud
👉🏻 Castbox
🤓🤓🤓 Математики обнаружили, что числа Фибоначчи, скрываются в странных пространствах

Подробнее
🤯🤯🤯 Задачка на IT тематику.

Есть однонаправленный список из структур. В нём random указывает на какой-то еще элемент этого же списка. Требуется написать функцию, которая копирует этот список с сохранением структуры (т.е. если в старом списке random первой ноды указывал на 4-ю, в новом списке должно быть то же самое – рандом первой ноды указывает на 4-ю ноду нового списка). O(n), константная дополнительная память + память под элементы нового списка. Нельзя сразу выделить память под все данные одник куском т.е. список должен быть честным, разбросанным по частям, а не единым блоком, как массив.
🗣 Расширьте вашу команду безопасников без найма

➡️ Читать
Упростите неизменяемые структуры данных в useReducer с помощью Immer

➡️ Подробнее
PagerDuty и Data Ops: предоставление организациям возможности улучшить процесс принятия решений с помощью более качественных данных

➡️ Читать
🤯🤯🤯 Задачка на IT тематику.

Задачка для питонистов: нужно перебрать все пары символов в строке, и остановиться при нахождении двух одинаковых символов.

Решение достаточно очевидное, но возникает вопрос:

s = "какая-то строка"
for i in range(len(s)):
for j in range(i+1, len(s)):
if s[i] == s[j]:
print(i, j)
break # Как выйти сразу из двух циклов?

Если бы мы программировали, например, на Java, то мы могли бы воспользоваться механизмом меток:

outterLoop: for(int i=0; i<n; i++){
for(int j=i; j<n; j++){
if(/*something*/){
break outterLoop;
}
}
}
Однако в Python такого механизма нет. Требуется предложить наиболее удобное в использовании и читаемое решение.
Как автоматизировать рутинные операции с помощью Jupyter, Python и Selenium

➡️ Читать
Дженерики через атрибуты в PHP — можем ли мы их получить?

➡️ Подробнее
🤯🤯🤯 Задачка на IT тематику.

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

Расположение переключателей случайное, порядок подключения заранее неизвестен. Зайдя в комнату, можно делать с лампочками всё, что угодно, но уже нельзя вернуться к переключателям. Изначально все лампы выключены.
🎙🎙🎙 Распознавание речи

Уже не раз затрагивалась тема голосовых ассистентов и их тестирования. Настало время фундаментальных вопросов — в этом выпуске разберетесь, как работают системы распознавания речи. Иван Бондаренко, старший преподаватель и научный сотрудник НГУ, рассказал из каких компонентов устроены типичные архитектуры таких систем, принцип их работы, и как системы эволюционируют, все больше полагаясь на нейронные сети. Не обойдут стороной и практику и обсудят, как самому реализовать распознавание речи из open-source решений.

🎙 Яндекс музыка
🎙 Google-подкаст
🎙 Apple-подкаст
🎙 SoundCloud
🎙 Castbox