Middle+
43
"""Напишете код, който извлича връзки от суров текст и ги сортира според определени правила. Списъкът с връзки, който ще бъде върнат, не трябва да съдържа дублиращи се елементи. Правилата за сортиране са следните: - Приоритет 1: Първо се взимат първите открити връзки в количество self.first_extracted_links - Приоритет 2: След това връзки към облачни дискове и документи (Yandex Disk и др.) - Приоритет 3: След това връзки към файлове (с разширения .exe, .pdf, .rar и др.) - Приоритет 4: Останалите връзки, сортирани по големина на дължината им Трябва също да се вземе предвид ограничението за броя връзки и да се реализира контекстен мениджър. Може например да се изпълни в [link]. Обобщение: - Дават се 30 минути за изпълнение - Трябва да се напишат функции apply, process, функции за контекстния мениджър - Всички тестове трябва да преминат - Тестовете не могат да бъдат модифицирани - Могат да се използват import-и - След писане, може да се провери като се изпълни локално и при нужда да се коригира regex за търсене на връзки: (?:https?|ftp):\/\/(?:[a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(?::\d+)?(?:\/[^\s()]*)?""" class LinkExtractor: DEFAULT_CLOUDS = frozenset(( "drive.google.com", "mediafire.com", "yadi.sk", "disk.yandex.ru", "cloud.mail.ru", "mega.nz" )) # Може да разширите този метод или да го препишете def __init__(self, max_links: int = 7, first_extracted_links: int = 2, clouds = None): # Максималният брой връзки, които ще се върнат self.max_links = max_links # Броят връзки, извлечени за първото условие self.first_extracted_links = first_extracted_links # Списък с домейни, считани за облачни за второто условие self.clouds = clouds or self.DEFAULT_CLOUDS self._results = [] # Трябва да напишете този метод, който добавя част от текста за анализ def apply(self, text) -> "LinkExtractor": ... return self
Компаниите бяха попитани
АВ Софт