QQuadPollen
Сценарии

Сценарии работы с кодом · Кодирование двоичной сетки квадродеревом

03
Вокруг ваших задач

Конкретная отправная точка

Закодируйте квадратную двоичную сетку с шириной в степень двойки до 16 квадродеревом с однородными листьями. Проверьте порядок верхний левый, верхний правый, нижний левый и нижний правый, отклоняя пустые, неровные и недвоичные сетки без их изменения.

01

Откройте контекст

Выберите папку проекта и обозначьте нужные файлы или поведение.

02

Опишите изменение

Укажите входные данные, ожидаемый результат и границы, которые нужно сохранить.

03

Изучите работу

Проверьте предлагаемые изменения и команды, прежде чем полагаться на результат.

04

Проверьте результат

Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.

Кодирование двоичной сетки квадродеревом

Конкретная отправная точка
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)

Пример — отправная точка для реального проекта, а не утверждение, что сгенерированный код уже протестирован. Адаптируйте пути, зависимости и ожидаемое поведение к своему приложению.

Рабочая среда с ИИ для кода

Здесь начинается ваше следующее изменение.

Скачать для Windows ↗