이진 격자의 사분 트리 인코딩
너비가 2의 거듭제곱이고 최대 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)프로젝트
왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래 순서를 확인하고 빈 격자, 불규칙한 격자, 이진이 아닌 격자를 변경 없이 거부합니다.
적용하기 전에 검토하세요
실제 동작을 예상 결과와 비교하세요. 검사가 실패하면 다음 변경을 하기 전에 원인을 조사하세요.
모델
기본 URL과 필요한 API 키로 OpenAI 호환 또는 Anthropic 엔드포인트를 설정하고 연결을 테스트하세요. 로컬 모델 서버는 실행 중이어야 합니다. 원격 도구는 데이터를 별도로 전송할 수 있습니다.
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 AI 코딩 작업 공간입니다. 프로젝트 폴더를 열고 생성 코드와 사용처 사이의 계약을 설명하세요. 연결된 대화는 양쪽 변경을 수락하기 전에 그 경계를 살펴보고 현재 표현을 설명하며 범위를 좁힌 제안을 평가하는 데 도움이 됩니다.
quadtree.py 기반 작업에서는 이진 격자가 중첩 표현으로 바뀌는 과정을 조사할 수 있습니다. 허용 입력 크기, 균일 영역의 표현, 사용처가 특정 자식 순서에 의존하는지 물어보세요. 예상 구조를 독립적으로 살펴볼 수 있는 작은 격자를 사용하세요. 예제는 소프트웨어 검토의 기반이며 내장 공간 데이터베이스나 저장 최적화 서비스를 뜻하지 않습니다.
서비스에서 제공하는 경우 지원되는 OpenAI 호환 또는 Anthropic 엔드포인트를 통해 필터 없는 AI 모델을 선택할 수 있습니다. 필요한 연결 설정을 구성하고 모델의 실제 도구 지원을 살펴보세요. 생성자와 사용처에 비추어 제안 패치를 검토한 뒤 균일 데이터와 혼합 데이터를 모두 다루는 테스트를 실행하세요. 특히 압축 표현에서는 일반적인 애플리케이션 출력만으로 순서 오류를 알아보기 어려우므로, 의도한 표현 보존은 유효한 입력 수용만큼 중요합니다.
표현 변경에 관한 질문
- 검토에 유용한 작은 격자는 어떤 것인가요?
순서가 틀리면 예상 구조가 달라지도록 눈에 띄게 다른 영역을 가진 격자를 사용하세요. 균일한 격자는 별도 사례로 포함하세요. 새 인코더에 자체 예상 결과를 생성하게 하지 말고 의도한 표현을 명시적으로 제공하세요.
- 사용처를 갱신하지 않고 표현을 바꿀 수 있나요?
사용처의 계약이 계속 충족될 때만 가능합니다. 인코딩 변경을 수락하기 전에 자식 위치, 말단 값, 중첩을 읽는 코드를 살펴보세요. 생성자가 자체 테스트를 통과해도 저장 데이터나 다른 애플리케이션 구성 요소와의 호환성이 입증되지는 않습니다.
- 더 큰 입력을 자동으로 허용해야 하나요?
아니요. 먼저 기존 한도가 존재하는 이유와 호출자의 요구를 검토하세요. 큰 구조는 자원 사용과 검증 필요를 바꿀 수 있습니다. 확장을 리팩터링의 부작용이 아니라 대응 검사가 필요한 의도적인 요구사항으로 다루세요.
- 읽기 어려운 출력은 어떻게 검토하나요?
작은 입력부터 시작해 반환된 각 영역을 원본 데이터와 비교하세요. 일반적인 설명보다 위치에 연결된 설명을 요청하세요. 그런 다음 사용 동작을 확인하여 경계 양쪽에서 표현의 의미가 일관되게 유지되도록 하세요.
QuadPollen · 업데이트 2026-10-25