TGViewer
About Python [ru] About Python [ru] @python_tesst · 6.44K subscribers
Post #2423 781
👩‍💻 Умная генерация коротких ссылок с контролем коллизий

Реализуйте функцию shorten_url(original_url, storage), которая генерирует короткий код (например, 5 символов) для длинной ссылки.

Функция должна гарантировать уникальность кода и использовать уже существующий storage (словарь вида {short_code: original_url}) для проверки коллизий.

Код должен быть:

• Состоящим из символов [a-zA-Z0-9]
• Фиксированной длины (по умолчанию 5)
• Уникальным: если сгенерированный код уже есть — нужно сгенерировать другой


Решение задачи🔽

import random
import string

def shorten_url(original_url, storage, code_length=5):
chars = string.ascii_letters + string.digits
attempt = 0
max_attempts = 1000

while attempt < max_attempts:
code = ''.join(random.choices(chars, k=code_length))
if code not in storage:
storage[code] = original_url
return code
attempt += 1

raise RuntimeError("Unable to generate unique code after many attempts")

# Пример использования
storage = {}
url = "
https://example.com/very/long/link"
code = shorten_url(url, storage)
print(code)
print(storage)
More from @python_tesst
  1. Oct 2, 2026Post #3218
  2. Oct 2, 2026😅 Айтишник отправил в одну компанию три одинаковых резюме и только одно дошло до финала О…
  3. Oct 2, 2026🤣 Правильно расставленные приоритеты в моей жизни би лайк: 💥 xCode Journal
  4. Oct 2, 2026Post #3215
  5. Oct 1, 2026🤯 Люди взбунтовались против «пыточной для ИИ» На GitHub заметили открытый проект AI Tortu…
  6. Oct 1, 2026День в Заонежье начинается ещё в дороге. Мы встретим вас в аэропорту или на вокзале. Дальш…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →