JSON грузчики
Open in Telegram
ТГ канал для python разработчиков всех мастей youtube: https://www.youtube.com/@programming_etc/streams Бусти: https://boosty.to/vyachek_proger почта: skavik46111@gmail.com instagram: какой на хуй инст, ахаха он же заблочен
Show more747
Subscribers
No data24 hours
-27 days
-130 days
Posts Archive
Алгосы сегодня в 9 вечера. Повспоминал для вас микрозадачки которые мне попадались раньше на собеседовании
мне сегодня снилось как вячик решает алгоритмы на стриме - блаженство
а когда будильник зазвонил я заплакал
Залил самый интересный кусок вчерашнего стрима на Медленный. Всем провалившим лайвкодинг посвещается
https://youtu.be/TIriPNGVCAA
Дано бинарное дерево с выделенным корнем, в каждой вершине которого записано по одной букве A-Z.
Две вершины считаются эквивалентными, если поддеревья этих вершин содержат одинаковое множество
(т.е. без учета частот) букв.
Нужно найти любую пару эквивалентных вершин.
A
/ \
B+ C+
/ \ / \
D C F BПодрубка сегодня в 9 часов вечера. Разберём парочку алгоритмических задач на которых я дал жидкого в яндексе, а потом может в страшилку поиграем, да и в ценлом пообщаемся, видосики посмотрим. Ну а пока подрубки нет, ни на что не намекаю канеш, но там как бы видосик новый про логи вышел на бусти 👉👈
https://boosty.to/vyachek_proger/posts/e34bad36-2390-4640-9a4a-f51de878d637?share=post_link
Та самая задачка с яндекса, которую решали на стриме
from abc import ABC, abstractmethod
import io
class Processor(ABC):
@abstractmethod
def compress_and_encrypt(self, data: bytes) -> bytes:
pass
@abstractmethod
def decrypt_and_uncompress(self, data: bytes) -> bytes:
pass
class Folder(ABC):
@abstractmethod
async def write_file(self, name: str, data: bytes):
pass
@abstractmethod
async def read_file(self, name: str) -> bytes:
pass
@abstractmethod
async def list_files(self) -> list[str]:
pass
"""
У вас есть некая система, выдающая и принимающая обратно свой бэкап в виде потока байтов.
Бэкап может занимать до 10 TiB.
Есть ресурсоемкий алгоритм сжатия/шифрования позволяющий (относительно медленно) сжимать/шифровать поток данных.
Данные сжимаются примерно в 1.5-3 раза.
И есть сетевое хранилище (тоже относительно медленное), которое позволяет сохранять файлы.
Размер одного файла в хранилище не может превышать 100 MiB.
Предполагается, что внутри Folder содержится 1 бэкап и изначально Folder пустой.
"""
"""
Необходимо реализовать функции `save_backup` и `restore_backup`,
реализующие сохранение бэкапа из потока в сетевое хранилище и восстановление обратно:
"""
def save_backup(processor: Processor, folder: Folder, stream: io.BufferedReader):
...
def restore_backup(processor: Processor, folder: Folder, stream: io.BufferedWriter):
...Сегодня в 20:00 стрим с апдейтами по ситуации плюс разберём задачу с собеса в яндекс, который я недавено проходил.
Наебал
digits_map = {
'2': 'abc',
'3': 'def',
'4': 'ghi',
'5': 'jkl',
'6': 'mno',
'7': 'pqrs',
'8': 'tuv',
'9': 'wxyz',
}
class Solution:
def letterCombinations(self, digits: str, index: int = 0) -> list[str]:
current_index = index
if current_index >= len(digits):
return []
current_strings = list(digits_map[digits[current_index]])
result = []
for current_string in current_strings:
next_letters = self.letterCombinations(digits, current_index + 1)
if not next_letters:
result.append(current_string)
for next_letter in next_letters:
result.append(''.join((current_string, next_letter)))
return result