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

Максимальний прямокутник гістограми

Знайдіть найбільший прямокутник під стовпцями одиничної ширини з не більш ніж 256 цілими висотами від нуля до 1000000.

● ● ●BarCumulus●
Сценарії · Максимальний прямокутник гістограми ×
def histogram_area(heights):
    heights = tuple(heights)
    if len(heights) > 256 or any(type(h) is not int or not 0 <= h <= 1000000 for h in heights):
        raise ValueError("height.range")
    stack, best = [], 0
    for i in range(len(heights) + 1):
        current = heights[i] if i < len(heights) else 0
        while stack and heights[stack[-1]] > current:
            height = heights[stack.pop()]
            start = stack[-1] + 1 if stack else 0
            best = max(best, height * (i - start))
        stack.append(i)
    return best
✳Знайдіть найбільший прямокутник під стовпцями одиничної ширини з не більш ніж 256 цілими висотами від нуля до 1000000.
✓ ЗміниПеревірте перед застосуванням ↗
Ілюстрація робочого середовища
01

Проєкт

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

02

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

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

03

Моделі

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

Сценарії

Максимальний прямокутник гістограми

Сценарії ↗
Сценарії
def histogram_area(heights):
    heights = tuple(heights)
    if len(heights) > 256 or any(type(h) is not int or not 0 <= h <= 1000000 for h in heights):
        raise ValueError("height.range")
    stack, best = [], 0
    for i in range(len(heights) + 1):
        current = heights[i] if i < len(heights) else 0
        while stack and heights[stack[-1]] > current:
            height = heights[stack.pop()]
            start = stack[-1] + 1 if stack else 0
            best = max(best, height * (i - start))
        stack.append(i)
    return best
Робоче середовище з ШІ для коду

Перш ніж змінювати форму коду, визначте, що рефакторинг має зберегти

BarCumulus — робоче середовище програмування з ШІ у Windows для перевірки змін реалізації без втрати поведінки, яку вони мають зберігати. Відкрийте папку проєкту й поясніть, навіщо потрібен рефакторинг: зрозуміліший стан, менша допоміжна функція чи простіше тестування. Попросіть модель перевірити наявний контракт перед пропозицією заміни.

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

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

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

Контроль результатів рефакторингу

Яка причина для рефакторингу алгоритму є корисною?

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

Навіщо додавати до тестових прикладів стовпці однакової висоти?

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

Чи доводить диференційне тестування еквівалентність двох реалізацій?

Воно підтверджує еквівалентність для перевірених входів і може виявити розбіжності. Тримайте діапазон входів та еталонну реалізацію явними й досліджуйте відмінності. Не називайте скінченне тестування доказом для всіх можливих входів, які приймає виробнича функція.

Як перевіряти запропонований скрипт порівняння?

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

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

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