Канонічне призначення префіксних кодів
Призначте канонічні двійкові префіксні коди не більш як 256 символам із довжинами від 1 до 16.
def canonical_codes(lengths):
if type(lengths) is not dict or len(lengths) > 256:
raise ValueError("codes.input")
if any(type(s) is not str or not s or type(n) is not int or
not 1 <= n <= 16 for s,n in lengths.items()):
raise ValueError("codes.length")
result, code, previous = {}, 0, 0
for symbol, length in sorted(lengths.items(), key=lambda p:(p[1],p[0])):
code <<= length-previous
if code >= 1 << length:
raise ValueError("codes.oversubscribed")
result[symbol] = format(code, f"0{length}b")
code += 1
previous = length
return result| Перевірте перед застосуванням | Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами. |
|---|---|
| Моделі | Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані. |
| Проєкт | Перевірте порожні й неповні таблиці, сортуйте рівні довжини за вихідними рядками Unicode та відхиляйте надлишкові або хибні довжини без нормалізації. |
def canonical_codes(lengths):
if type(lengths) is not dict or len(lengths) > 256:
raise ValueError("codes.input")
if any(type(s) is not str or not s or type(n) is not int or
not 1 <= n <= 16 for s,n in lengths.items()):
raise ValueError("codes.length")
result, code, previous = {}, 0, 0
for symbol, length in sorted(lengths.items(), key=lambda p:(p[1],p[0])):
code <<= length-previous
if code >= 1 << length:
raise ValueError("codes.oversubscribed")
result[symbol] = format(code, f"0{length}b")
code += 1
previous = length
return resultЗробіть зміну таблиці кодування відтворюваною
Коли дві реалізації будують різні таблиці кодування з одного опису, для налагодження потрібно більше, ніж ще один приклад результату. Codelith надає для такого дослідження середовище програмування з ШІ у Windows: відкрийте проєкт, додайте суперечливі результати до розмови й попросіть підключену модель перевірити джерело відмінності перед пропозицією змін.
Одне з доречних завдань — призначення канонічних префіксних кодів за довжинами символів. Опишіть правило порядку для однакових довжин і те, чи мають початкові рядки Unicode лишатися незмінними. Додайте споживача таблиці, щоб пропозиція враховувала формат, який він читає. Приклад призначення — спосіб сформулювати перевірку коду, а не інструмент кодування у складі середовища.
Попросіть цільову пропозицію, що явно задає обраний порядок. Перевіряйте порожні й неповні таблиці окремо від наборів довжин, що перевищують місткість кодового простору, а потім запустіть тести формату у власному середовищі проєкту. Порівняйте точні бітові рядки та відповідність символів. Навіть впорядкована таблиця може не відповідати споживачу. Тримайте очікувану серіалізацію видимою під час перевірки.
Codelith підтримує підключення моделей через кінцеві точки, сумісні з OpenAI, або Anthropic. Модель ШІ без обмежень можна обрати, якщо її пропонує постачальник, з обліковими даними за потреби. Обрані сервер і модель визначають контекст, інструменти й обмеження. Ваші тести та перевірка встановлюють, чи відповідає запропонована зміна кодування контракту застосунку.
Питання щодо зміни таблиці кодування
- Які дані допоможуть пояснити дві різні таблиці?
Надайте однакові вхідні дані символів і довжин, обидві отримані таблиці й задокументоване правило порядку. Укажіть, де застосунок записує або читає таблицю. Тоді модель зможе обговорювати конкретну розбіжність, а не вгадувати, якого результату очікує формат.
- Чи слід нормалізувати символи Unicode перед сортуванням?
Лише якщо формат прямо вимагає такого перетворення. Приклад зберігає початкові рядки й упорядковує їх відповідно. Укажіть правило в запиті та перевірте, що запропонований код мовчки не об’єднує й не змінює різні символи.
- Чи рівнозначні помилки неповної таблиці й перевищення кодового простору?
Це різні стани, і формат визначає, які з них допускає. Додайте окремі тести й очікувані результати. Попросіть зберегти це розрізнення, а не трактувати будь-який невикористаний кодовий простір як доказ хибності таблиці.
- Як перевірити сумісність із наявним читачем?
Пропустіть характерні таблиці через засоби запису й читання проєкту, порівнюючи точні відповідності, потрібні формату. Перевірте обидва шляхи, якщо пропозиція змінює порядок. Саме успішне редагування коду не встановлює сумісності з раніше збереженими даними.
Codelith · Оновлено 2026-10-25