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