Quadtree-Kodierung binärer Raster
Kodiere ein quadratisches Binärraster mit Zweierpotenzbreite bis 16 als Quadtree mit einheitlichen Blättern.
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
Prüfe die Reihenfolge oben links, oben rechts, unten links und unten rechts, und lehne leere, unregelmäßige oder nicht binäre Raster unverändert ab.
Vor dem Anwenden prüfen
Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen.
Modelle
Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen.
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)Darstellungsänderungen von beiden Seiten verständlich halten
QuadPollen ist ein KI-Programmierarbeitsbereich für Windows für Entwickler, die die Darstellung strukturierter Daten in einer Anwendung ändern. Öffnen Sie den Projektordner und beschreiben Sie den Vertrag zwischen erzeugendem und verarbeitendem Code. Das Gespräch mit dem verbundenen Modell hilft, diese Grenze zu prüfen, die aktuelle Darstellung zu erklären und einen gezielten Vorschlag zu bewerten, bevor Sie Änderungen auf einer Seite übernehmen.
Eine Aufgabe auf Basis von quadtree.py könnte untersuchen, wie ein binäres Raster zu einer verschachtelten Darstellung wird. Fragen Sie nach zulässigen Eingabegrößen, der Darstellung einheitlicher Bereiche und danach, ob Verbraucher eine bestimmte Kindreihenfolge voraussetzen. Nutzen Sie kleine Raster, deren erwartete Struktur unabhängig prüfbar ist. Das Beispiel konkretisiert eine Softwareprüfung; es belegt keine eingebaute räumliche Datenbank und keinen Dienst zur Speicheroptimierung.
Sie können ein ungefiltertes KI-Modell über einen unterstützten OpenAI-kompatiblen oder Anthropic-Endpunkt wählen, wenn der Dienst eines bereitstellt. Konfigurieren Sie die erforderlichen Verbindungseinstellungen und prüfen Sie die tatsächliche Werkzeugunterstützung des Modells. Prüfen Sie den Patch anhand von Erzeugern und Verbrauchern und führen Sie Tests mit einheitlichen und gemischten Daten aus. Die beabsichtigte Darstellung zu bewahren ist ebenso wichtig wie gültige Eingaben anzunehmen, besonders wenn eine kompakte Kodierung Reihenfolgefehler in gewöhnlichen Anwendungsausgaben schwer erkennbar macht.
Fragen zu Darstellungsänderungen
- Was macht ein kleines Raster für die Prüfung nützlich?
Verwenden Sie ein Raster mit sichtbar unterschiedlichen Bereichen, sodass ein Reihenfolgefehler die erwartete Struktur verändert. Ergänzen Sie ein einheitliches Raster als eigenen Fall. Geben Sie die beabsichtigte Darstellung ausdrücklich an, statt den neuen Kodierer sein eigenes erwartetes Ergebnis erzeugen zu lassen.
- Kann sich die Darstellung ändern, ohne Verbraucher anzupassen?
Nur wenn deren Vertrag weiterhin erfüllt wird. Prüfen Sie vor einer Kodierungsänderung Code, der Kindpositionen, Blattwerte oder Verschachtelungen liest. Eigene bestandene Tests eines Erzeugers belegen keine Kompatibilität mit gespeicherten Daten oder anderen Anwendungskomponenten.
- Sollten größere Eingaben automatisch akzeptiert werden?
Nein. Prüfen Sie zuerst, warum bestehende Grenzen existieren und was der Aufrufer benötigt. Größere Strukturen können Ressourcenbedarf und Validierungsanforderungen verändern. Behandeln Sie die Erweiterung als bewusste Anforderung mit entsprechenden Prüfungen, nicht als Nebenwirkung eines Refactorings.
- Wie prüfe ich schwer lesbare Ausgaben?
Beginnen Sie mit kleinen Eingaben und vergleichen Sie jeden zurückgegebenen Bereich mit den Originaldaten. Fordern Sie eine positionsbezogene Erklärung statt einer allgemeinen Beschreibung an. Prüfen Sie dann das verarbeitende Verhalten, damit die Bedeutung der Darstellung über die Schnittstelle hinweg konsistent bleibt.
QuadPollen · Aktualisiert 2026-10-25