BBarCumulus
Środowisko programowania z AI

Największy prostokąt histogramu

Znajdź największy prostokąt pod słupkami szerokości jeden o najwyżej 256 całkowitych wysokościach od zera do 1000000.

● ● ●BarCumulus●
Sposoby pracy · Największy prostokąt histogramu ×
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
✳Znajdź największy prostokąt pod słupkami szerokości jeden o najwyżej 256 całkowitych wysokościach od zera do 1000000.
✓ ZmianySprawdź przed zastosowaniem ↗
Ilustracja środowiska
01

Projekt

Sprawdź pustą listę i równe wysokości, odrzucając wartości ujemne lub logiczne bez zmiany danych.

02

Sprawdź przed zastosowaniem

Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami.

03

Modele

Dodaj endpoint zgodny z OpenAI lub Anthropic, podając bazowy URL i klucz API, jeśli jest wymagany. Sprawdź połączenie. Lokalny serwer modelu musi działać; zdalne narzędzia mogą przesyłać dane oddzielnie.

Sposoby pracy

Największy prostokąt histogramu

Sposoby pracy ↗
Sposoby pracy
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
Środowisko programowania z AI

Zapytaj, co refaktoryzacja ma zachować, zanim zmienisz strukturę kodu

BarCumulus to środowisko programowania z AI dla Windows do przeglądania zmian implementacji bez utraty zachowania, które mają zachować. Otwórz folder projektu i wyjaśnij cel refaktoryzacji: czytelniejszy stan, mniejsza funkcja pomocnicza lub łatwiejsze testowanie. Poproś model o sprawdzenie obecnego kontraktu przed zaproponowaniem zamiennika.

Możesz podłączyć model AI bez cenzury, jeśli oferuje go obsługiwany punkt końcowy zgodny z OpenAI lub punkt Anthropic. Dodaj dane uwierzytelniające, gdy są potrzebne. Ograniczenia dostawcy, możliwości narzędzi i limity kontekstu pozostają w mocy, więc wykorzystuj rozmowę do tworzenia rozumowania poddającego się przeglądowi, zamiast uznawać inaczej wyglądającą implementację za ulepszenie samo w sobie.

Jednym z przykładów jest obliczanie największego prostokąta pod słupkami o zadanych wysokościach. Poproś o przegląd obsługi równych wysokości, pustego wejścia i końcowych zaległych operacji. Podaj małe przypadki testowe z ręcznie sprawdzonymi wynikami, a następnie zapytaj model, które elementy proponowanej refaktoryzacji je zachowują, a które zmieniają.

Sprawdź wynikowe różnice i uruchom kontrole projektu na tej samej wersji, którą zamierzasz zachować. Przy złożonych zmianach porównaj wyniki z niezależną prostą implementacją dla małych danych. To porównanie stanowi dowód w granicach przetestowanego zakresu; nie zmienia środowiska programistycznego w automatyczny system dowodzenia.

Refaktoryzacja pod kontrolą

Jaki powód refaktoryzacji algorytmu jest użyteczny?

Nazwij problem utrzymania, który potrafisz ocenić, np. niejasne przejścia stanu lub powieloną obsługę. Poproś o najmniejszą propozycję, która go rozwiązuje. Zamiennik powinien uzasadniać swoje miejsce czytelnością i zweryfikowanym zachowaniem, a nie samą nowością.

Dlaczego uwzględniać słupki o jednakowej wysokości?

Równe wartości mogą ujawnić założenia o tym, kiedy oczekujący stan jest zachowywany lub usuwany. Dodaj krótki płaski odcinek o znanym wyniku. Przed przeglądem większych przykładów poproś model o wyjaśnienie tego przypadku na tle proponowanej implementacji.

Czy testy różnicowe dowodzą równoważności dwóch implementacji?

Wspierają tezę o równoważności dla przetestowanych danych i mogą ujawnić rozbieżności. Zachowaj jawny zakres wejść i implementację referencyjną oraz analizuj różnice. Nie opisuj skończonych testów jako dowodu dla wszystkich danych dopuszczanych przez funkcję produkcyjną.

Jak ocenić proponowany skrypt porównawczy?

Przed uruchomieniem przeczytaj jego granice wejść i plan wykonania. Potwierdź też miejsca docelowe narzędzi: lokalne wnioskowanie modelu wymaga osobnego serwera i nie sprawia, że każde podłączone narzędzie wykonawcze działa lokalnie. Celowo utrzymuj mały zakres testów.

Pobierz dla Windows ↗

BarCumulus · Zaktualizowano 2026-10-25