Кодування двійкової сітки квадродеревом
Закодуйте квадратну двійкову сітку із шириною у степінь двійки до 16 квадродеревом з однорідними листками.
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)Проєкт
Перевірте порядок верхній лівий, верхній правий, нижній лівий і нижній правий, відхиляючи порожні, нерівні та недвійкові сітки без зміни.
Перевірте перед застосуванням
Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
Моделі
Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
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)Робіть зміну подання зрозумілою з обох боків
QuadPollen — робоче середовище програмування з ШІ у Windows для розробників, які змінюють подання структурованих даних у застосунку. Відкрийте папку проєкту й опишіть контракт між кодом, що створює дані, та їхнім споживачем. Обговорення з підключеною моделлю може допомогти перевірити цю межу, пояснити поточне подання й оцінити цільову пропозицію перед прийняттям змін будь-якого боку.
Завдання на основі quadtree.py може досліджувати перетворення бінарної сітки на вкладене подання. Запитайте, які розміри входу допустимі, як подано однорідні області та чи споживачі залежать від певного порядку дочірніх елементів. Використовуйте невеликі сітки, очікувану структуру яких можете перевірити незалежно. Приклад конкретизує перевірку ПЗ; він не означає наявності вбудованої просторової бази даних чи сервісу оптимізації зберігання.
Можна вибрати нефільтровану модель ШІ через підтримувану сумісну з OpenAI або Anthropic кінцеву точку, коли сервіс її надає. Налаштуйте потрібні параметри підключення й дослідіть фактичну підтримку інструментів моделлю. Перевірте запропонований патч щодо виробників і споживачів даних, а потім запустіть тести однорідних та змішаних даних. Збереження задуманого подання так само важливе, як прийняття коректного входу, особливо коли компактне кодування ускладнює виявлення помилки порядку у звичайному виведенні застосунку.
Питання щодо змін подання
- Яка невелика сітка корисна для перевірки?
Використайте сітку з помітно різними областями, щоб помилка порядку змінювала очікувану структуру. Окремо додайте однорідну сітку. Явно надайте задумане подання, а не просіть новий кодувальник згенерувати власний очікуваний результат.
- Чи може подання змінитися без оновлення споживачів?
Лише якщо їхній контракт залишається виконаним. Перевірте код, що читає позиції дочірніх елементів, значення листків або вкладеність, перед прийняттям зміни кодування. Проходження власних тестів виробником даних не підтверджує сумісності зі збереженими даними чи іншими компонентами застосунку.
- Чи слід автоматично приймати більші розміри входу?
Ні. Спочатку з’ясуйте, навіщо існують поточні межі та що потрібно коду виклику. Більші структури можуть змінити використання ресурсів і потреби валідації. Розглядайте розширення як свідому вимогу з відповідними перевірками, а не побічний ефект рефакторингу.
- Як перевіряти результат, який важко читати?
Почніть із малих входів і порівняйте кожну повернуту область із початковими даними. Попросіть пояснення, прив’язане до позицій, замість загального опису. Потім перевірте поведінку споживача, щоб зміст подання залишався узгодженим по обидва боки межі.
QuadPollen · Оновлено 2026-10-25