QQuotaMosaic
Робоче середовище з ШІ для коду

Розподіл за найбільшими остачами

Розподіліть до 10000 місць між не більш ніж 1000 невід’ємними цілими вагами за найбільшими остачами.

● ● ●QuotaMosaic●
Сценарії · Розподіл за найбільшими остачами ×
def allocate(weights, seats):
    if type(weights) not in (list, tuple) or len(weights) > 1000:
        raise ValueError("weights.container")
    weights = tuple(weights)
    if type(seats) is not int or not 0 <= seats <= 10000:
        raise ValueError("seats.range")
    if len(weights) > 1000 or any(type(w) is not int or w < 0 for w in weights):
        raise ValueError("weights.invalid")
    total = sum(weights)
    if total == 0:
        if seats:
            raise ValueError("weight.zero")
        return [0] * len(weights)
    result = [w * seats // total for w in weights]
    remaining = seats - sum(result)
    order = sorted(range(len(weights)), key=lambda i: (-(weights[i] * seats % total), i))
    for i in order[:remaining]:
        result[i] += 1
    return result
✳Розподіліть до 10000 місць між не більш ніж 1000 невід’ємними цілими вагами за найбільшими остачами.
✓ ЗміниПеревірте перед застосуванням ↗
Ілюстрація робочого середовища
01

Моделі

Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.

02

Проєкт

Перевірте нульові ваги й рівні остачі з розв’язанням за порядком вводу, відхиляючи додатний розподіл при нульовій сумі ваг до ділення.

03

Перевірте перед застосуванням

Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.

Сценарії

Розподіл за найбільшими остачами

Сценарії ↗
Сценарії
def allocate(weights, seats):
    if type(weights) not in (list, tuple) or len(weights) > 1000:
        raise ValueError("weights.container")
    weights = tuple(weights)
    if type(seats) is not int or not 0 <= seats <= 10000:
        raise ValueError("seats.range")
    if len(weights) > 1000 or any(type(w) is not int or w < 0 for w in weights):
        raise ValueError("weights.invalid")
    total = sum(weights)
    if total == 0:
        if seats:
            raise ValueError("weight.zero")
        return [0] * len(weights)
    result = [w * seats // total for w in weights]
    remaining = seats - sum(result)
    order = sorted(range(len(weights)), key=lambda i: (-(weights[i] * seats % total), i))
    for i in order[:remaining]:
        result[i] += 1
    return result
Робоче середовище з ШІ для коду

Нехай зміни розподілу пояснюють суми й рівні залишки

Функція розподілу може забезпечувати загальну суму, але розподіляти окремі частки інакше, ніж очікують користувачі. QuotaMosaic — програма для кодування з ШІ у Windows, де можна дослідити цю відмінність у власному проєкті. Додайте реалізацію, код виклику й кілька очікуваних розподілів до розмови перед запитом зміни коду.

Одне завдання перевірки — розподіл за найбільшими залишками, коли цілі одиниці слід призначати за невід’ємними вагами. Попросіть підключену модель дослідити взаємодію базового розподілу й залишкових одиниць. Додайте приклад рівних залишків і явно вкажіть правило їх розв’язання, щоб зміна порядку не змінила результат непомітно.

Перевіряйте інтерфейс так само ретельно, як арифметику. Визначте значення порожніх даних або нульової суми ваг, коли запитано одиниці, а потім перевірте, як помилки доходять до коду виклику. Запустіть перевірки проєкту на малих незалежно перевірених прикладах і перевірте кінцеву суму та окремі призначення. Збереження одного інваріанта не доводить іншого.

QuotaMosaic підключається до підтримуваних кінцевих точок, сумісних з OpenAI, або Anthropic. Аблітеровану модель ШІ можна обрати, якщо вона доступна; її можливості й межі визначають модель і сервер. Використовуйте модель для дослідження правил і підготовки перевірюваного виправлення, а потім перевірте отриману поведінку у застосунку.

Суми й рівні залишки в розподілі — питання перед редагуванням

Що зазначити про рівні залишки перед запитом виправлення?

Укажіть порядок рівних залишків, зокрема чи важливий початковий порядок даних. Надайте приклад нічиєї з очікуваним розподілом. Інакше на вигляд нешкідлива зміна сортування може змінити отримувача останньої одиниці.

Чи достатньо перевірити суму для перевірки зміни?

Ні. Різні розподіли можуть мати однакову суму. Перевірте кількість для кожного отримувача й результат нічиєї. Використовуйте незалежні очікувані приклади, а не лише повторюйте обчислення реалізації в тесті.

Як обробляти нульову суму ваг?

Визначте окремі очікування для запиту нуля одиниць і додатної кількості. Перевірте наявний контракт помилки разом із кодом виклику. Модель не повинна вигадувати отримувачів або ділити на невизначену суму, щоб функція щось повернула.

Чи визначає приклад усі політики розподілу?

Він задає конкретний контекст перевірки з цілими одиницями й невід’ємними вагами. Якщо застосунок має верхні межі, мінімуми чи інші пріоритети, додайте їх явно. Перевірте, чи зміна досі реалізує політику, потрібну користувачам.

Завантажити для Windows ↗

QuotaMosaic · Оновлено 2026-10-25