Sobes.tech
Middle+

«Գրեք կոդ, որը իրականացնում է հում տեքստից հղումների հանելը և դրանք դասավորում է որոշակի կանոններով: Հղումների ցանկը, որը կվերադարձվի, չպետք է պարունակի կրկնօրինակներ: Դասավորման կանոնները հետևյալն են՝ - Առաջնահերթություն 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()]*)?\n """ 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