Kodowanie binarnych siatek drzewem czwórkowym
Zakoduj kwadratową siatkę binarną o szerokości będącej potęgą dwóch do 16 jako drzewo czwórkowe z jednorodnymi liśćmi.
def encode_quadtree(grid):
grid = tuple(tuple(row) for row in grid)
n = len(grid)
if not 1 <= n <= 16 or n & (n - 1) or any(len(row) != n for row in grid):
raise ValueError("grid.shape")
if any(type(v) is not int or v not in (0, 1) for row in grid for v in row):
raise ValueError("cell.binary")
def visit(x, y, size):
value = grid[y][x]
if all(grid[r][c] == value for r in range(y, y + size) for c in range(x, x + size)):
return value
half = size // 2
return (visit(x, y, half), visit(x + half, y, half),
visit(x, y + half, half), visit(x + half, y + half, half))
return visit(0, 0, n)Projekt
Sprawdź kolejność lewy górny, prawy górny, lewy dolny i prawy dolny obszar, odrzucając puste, nierówne lub niebinarne siatki bez ich zmiany.
Sprawdź przed zastosowaniem
Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami.
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.
def encode_quadtree(grid):
grid = tuple(tuple(row) for row in grid)
n = len(grid)
if not 1 <= n <= 16 or n & (n - 1) or any(len(row) != n for row in grid):
raise ValueError("grid.shape")
if any(type(v) is not int or v not in (0, 1) for row in grid for v in row):
raise ValueError("cell.binary")
def visit(x, y, size):
value = grid[y][x]
if all(grid[r][c] == value for r in range(y, y + size) for c in range(x, x + size)):
return value
half = size // 2
return (visit(x, y, half), visit(x + half, y, half),
visit(x, y + half, half), visit(x + half, y + half, half))
return visit(0, 0, n)Zadbaj o zrozumiałość zmiany reprezentacji po obu stronach
QuadPollen to środowisko programowania z AI dla Windows dla twórców zmieniających sposób reprezentowania danych strukturalnych w aplikacji. Otwórz folder projektu i opisz kontrakt między kodem tworzącym dane a ich odbiorcą. Rozmowa z podłączonym modelem pomaga przeanalizować tę granicę, wyjaśnić obecną reprezentację i ocenić konkretną propozycję przed akceptacją zmian po którejkolwiek stronie.
Zadanie oparte na quadtree.py może badać zamianę siatki binarnej w reprezentację zagnieżdżoną. Zapytaj, jakie rozmiary wejściowe są akceptowane, jak reprezentowane są jednorodne obszary i czy odbiorcy polegają na określonej kolejności dzieci. Użyj małych siatek o oczekiwanej strukturze możliwej do niezależnego sprawdzenia. Przykład stanowi podstawę przeglądu oprogramowania; nie oznacza wbudowanej przestrzennej bazy danych ani usługi optymalizacji przechowywania.
Możesz wybrać model AI bez filtrów przez obsługiwany punkt końcowy zgodny z OpenAI lub punkt Anthropic, jeśli usługa go udostępnia. Skonfiguruj wymagane ustawienia połączenia i sprawdź rzeczywistą obsługę narzędzi modelu. Przejrzyj proponowaną poprawkę względem producentów i odbiorców danych, a następnie uruchom testy danych jednorodnych i mieszanych. Zachowanie zamierzonej reprezentacji jest równie ważne jak akceptacja poprawnego wejścia, zwłaszcza gdy zwarte kodowanie utrudnia zauważenie błędu kolejności w zwykłym wyniku aplikacji.
Pytania dotyczące zmian reprezentacji
- Jaka mała siatka jest użyteczna do przeglądu?
Użyj siatki z wyraźnie różnymi obszarami, aby błąd kolejności zmieniał oczekiwaną strukturę. Jako osobny przypadek dodaj siatkę jednorodną. Podaj zamierzoną reprezentację jawnie, zamiast prosić nowy koder o wygenerowanie własnego oczekiwanego wyniku.
- Czy można zmienić reprezentację bez aktualizacji odbiorców?
Tylko jeśli ich kontrakt pozostaje spełniony. Przed akceptacją zmiany kodowania sprawdź kod odczytujący pozycje dzieci, wartości liści lub zagnieżdżenia. Przejście własnych testów producenta nie potwierdza zgodności z zapisanymi danymi ani innymi komponentami aplikacji.
- Czy większe rozmiary wejścia powinny być akceptowane automatycznie?
Nie. Najpierw sprawdź powód obecnych ograniczeń i wymagania kodu wywołującego. Większe struktury mogą zmienić zużycie zasobów i potrzeby walidacji. Traktuj takie rozszerzenie jako świadome wymaganie z odpowiednimi kontrolami, a nie efekt uboczny refaktoryzacji.
- Jak przeglądać trudny do odczytania wynik?
Zacznij od małych wejść i porównuj każdy zwracany obszar z pierwotnymi danymi. Poproś o wyjaśnienie odniesione do pozycji zamiast ogólnego opisu. Następnie sprawdź zachowanie odbiorcy, aby znaczenie reprezentacji pozostało spójne po obu stronach granicy.
QuadPollen · Zaktualizowano 2026-10-25