🤯🤯🤯 Задачка на 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-времени. С учетом этого изменения нужно, чтобы ваша функция уже сейчас могла работать с большими числами. Еще не забудьте, что кортеж — это такой тип данных, в котором содержимое переменной невозможно изменять после ее создания.
Задача про слияние промежутков в календаре.
Предположим, компания, в которой вы работаете, разрабатывает электронный календарь. В календаре есть функция, показывающая, когда различные команды программистов будут заняты на какой-либо встрече.
Те периоды, когда команда занята, на календаре отмечены как диапазоны времени, например, с 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
🎙🎙🎙 Подкаст на тему: Продуктивность разработчика
На продуктивность можно смотреть по-разному – через призму количества закрытых задач, достигнутых результатов, собственного wellbeing. В этом выпуске мы с Кириллом Мокевниным обсуждаем продуктивность владения инструментами разработки, достижение которой позволит вам увереннее входить в состояние потока и дольше в нем оставаться. Слепая печать, горячие клавиши, терминал, Vim и куча других способов оптимизировать свою рутину.
👉🏻 Яндекс-музыка
👉🏻 Apple-подкаст
👉🏻 Google-подкаст
👉🏻 SoundCloud
👉🏻 Castbox
На продуктивность можно смотреть по-разному – через призму количества закрытых задач, достигнутых результатов, собственного wellbeing. В этом выпуске мы с Кириллом Мокевниным обсуждаем продуктивность владения инструментами разработки, достижение которой позволит вам увереннее входить в состояние потока и дольше в нем оставаться. Слепая печать, горячие клавиши, терминал, Vim и куча других способов оптимизировать свою рутину.
👉🏻 Яндекс-музыка
👉🏻 Apple-подкаст
👉🏻 Google-подкаст
👉🏻 SoundCloud
👉🏻 Castbox
🤯🤯🤯 Задачка на IT тематику.
Есть однонаправленный список из структур. В нём random указывает на какой-то еще элемент этого же списка. Требуется написать функцию, которая копирует этот список с сохранением структуры (т.е. если в старом списке random первой ноды указывал на 4-ю, в новом списке должно быть то же самое – рандом первой ноды указывает на 4-ю ноду нового списка). O(n), константная дополнительная память + память под элементы нового списка. Нельзя сразу выделить память под все данные одник куском т.е. список должен быть честным, разбросанным по частям, а не единым блоком, как массив.
Есть однонаправленный список из структур. В нём random указывает на какой-то еще элемент этого же списка. Требуется написать функцию, которая копирует этот список с сохранением структуры (т.е. если в старом списке random первой ноды указывал на 4-ю, в новом списке должно быть то же самое – рандом первой ноды указывает на 4-ю ноду нового списка). O(n), константная дополнительная память + память под элементы нового списка. Нельзя сразу выделить память под все данные одник куском т.е. список должен быть честным, разбросанным по частям, а не единым блоком, как массив.
PagerDuty и Data Ops: предоставление организациям возможности улучшить процесс принятия решений с помощью более качественных данных
➡️ Читать
➡️ Читать
👨🏫👨🏫👨🏫 Как выразительно отвечать на вопросы на английском языке и звучать убедительно
➡️ Подробнее
➡️ Подробнее
Хабр
Как выразительно отвечать на вопросы на английском языке и звучать убедительно
В наше время коротких текстовых и голосовых сообщений бывает сложно дать развернутый ответ о своих предпочтениях в выборе инструментов и техник на собеседовании с HR- специалистом или при обсуждении...
🤯🤯🤯 Задачка на 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 такого механизма нет. Требуется предложить наиболее удобное в использовании и читаемое решение.
Задачка для питонистов: нужно перебрать все пары символов в строке, и остановиться при нахождении двух одинаковых символов.
Решение достаточно очевидное, но возникает вопрос:
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 такого механизма нет. Требуется предложить наиболее удобное в использовании и читаемое решение.
🤯🤯🤯 Задачка на IT тематику.
Вы стоите перед закрытой комнатой, в которой есть три лампочки. На стене перед вами три переключателя: каждый из которых включает или выключает одну из лампочек. Вам нужно узнать, какой переключатель к какой лампочке относится, при условии, что зайти в комнату вы можете только один раз.
Расположение переключателей случайное, порядок подключения заранее неизвестен. Зайдя в комнату, можно делать с лампочками всё, что угодно, но уже нельзя вернуться к переключателям. Изначально все лампы выключены.
Вы стоите перед закрытой комнатой, в которой есть три лампочки. На стене перед вами три переключателя: каждый из которых включает или выключает одну из лампочек. Вам нужно узнать, какой переключатель к какой лампочке относится, при условии, что зайти в комнату вы можете только один раз.
Расположение переключателей случайное, порядок подключения заранее неизвестен. Зайдя в комнату, можно делать с лампочками всё, что угодно, но уже нельзя вернуться к переключателям. Изначально все лампы выключены.
🎙🎙🎙 Распознавание речи
Уже не раз затрагивалась тема голосовых ассистентов и их тестирования. Настало время фундаментальных вопросов — в этом выпуске разберетесь, как работают системы распознавания речи. Иван Бондаренко, старший преподаватель и научный сотрудник НГУ, рассказал из каких компонентов устроены типичные архитектуры таких систем, принцип их работы, и как системы эволюционируют, все больше полагаясь на нейронные сети. Не обойдут стороной и практику и обсудят, как самому реализовать распознавание речи из open-source решений.
🎙 Яндекс музыка
🎙 Google-подкаст
🎙 Apple-подкаст
🎙 SoundCloud
🎙 Castbox
Уже не раз затрагивалась тема голосовых ассистентов и их тестирования. Настало время фундаментальных вопросов — в этом выпуске разберетесь, как работают системы распознавания речи. Иван Бондаренко, старший преподаватель и научный сотрудник НГУ, рассказал из каких компонентов устроены типичные архитектуры таких систем, принцип их работы, и как системы эволюционируют, все больше полагаясь на нейронные сети. Не обойдут стороной и практику и обсудят, как самому реализовать распознавание речи из open-source решений.
🎙 Яндекс музыка
🎙 Google-подкаст
🎙 Apple-подкаст
🎙 SoundCloud
🎙 Castbox
Yandex Music
Podlodka Podcast
Podlodka – это еженедельное аудио-шоу про IT и все, что с ним связано. Формат наших выпусков - э... • Podcast • 25,988 subscribers