CIF 라이브러리 v1.1 일관성 확장
개요
CIF 라이브러리 3종을 v1.0 → v1.1로 승격. 트릿/맵 입력 형식 자동 감지로 일관성 확보. 추가로 삽입정렬 버그 발견 및 수정. 219/219 통과.v1.1 승격
CIF최적화 v1.1
- 입력: 트릿/맵 자동 감지
- 정규화: 트릿 → 맵
- 영향 API:
중복제거, 인접병합, 투명제거, 정렬, 양자화
CIF필터 v1.1
- 입력: 트릿/맵 자동 감지
- 정규화: 맵 → 트릿
- 영향 API:
밝기조절, 대비조절, 흑백, 반전, 세피아, 좌우반전, 상하반전, 회전90, 포스터화, 블러(10개)
CIF합성 v1.1
- 입력: 트릿/맵 자동 감지
- 정규화: 트릿 → 맵
- 영향 API:
레이어합성, 투명도조절, 색조이동, 밝기조절, 반전, 다중합성(6개)
추가 발견 버그 — 삽입정렬 j=-1 오용
증상: 4개 같은색 인접 점 → 2개로만 압축 (정상 1개)
근본 원인 (libs/CIF최적화.한선:인접병합, 정렬):
javascript; 잘못된 패턴 — j를 break 신호로 사용
동안 (j >= 0) {
만약 (비교키 > 현재키) {
; ...
j = j - 1
} 아니면 {
j = -1 ; break 신호로 -1 설정
}
}
정렬됨 = 설정(정렬됨, j + 1, 현재)
; ⚠ break일 때 j=-1 → 설정(_, 0, _)로 [0] 위치를 덮어씀
수정 — 별도 플래그 + 삽입위치 변수:
javascript변수 삽입위치 = i
변수 계속진행 = 1
동안 (j >= 0 그리고 계속진행 == 1) {
만약 (비교키 > 현재키) {
정렬됨 = 설정(정렬됨, j + 1, 비교)
삽입위치 = j
j = j - 1
} 아니면 {
계속진행 = 0
}
}
정렬됨 = 설정(정렬됨, 삽입위치, 현재)
검증:
이전: 너비0×4 점 → 2개 압축
수정후: 너비0×4 점 → 1개 (너비=3) 완벽 압축
역순 [3,0,2,1] → [0,1,2,3] 정상 정렬
27 검증 단계
기존 25 + 신규 2:
- 26. v1.1자동감지 — CIF필터/합성 양방향 입력
- 27. 인접병합효율 — 정렬 버그 수정 검증
누적 버그 6건 수정 완료
| # | 결함 | 상태 |
|---|---|---|
| 1 | v10.0 nat round vs Euclid 혼동 | 테스트 수정 |
| 2 | CIF최적화 트릿 입력 무시 | v1.1 정규화 |
| 3 | 알파블렌드 배열 반환 | 테스트 수정 |
| 4 | CIF_27색을RGB 음수 반환 | 정수 계산 |
| 5 | CIF_9트릿을RGB G/B 비대칭 | 곱셈 우선 |
| 6 | 삽입정렬 j=-1 오용 | 별도 플래그 |
통계
- 테스트: 219/219 (100%)
- 컴파일: 21회 (누적)
- 실행: 19회 (누적)
- 라이브러리 수정: 4개 파일 (CIF, CIF최적화, CIF필터, CIF합성)
- 단계: 27 (목표 25 +2)
학습DB 등록
CIF_입력형식_자동감지패턴(트릿/맵 자동 감지)한선씨_부동소수점_정수치환_패턴(정수 계산)한선씨_삽입정렬_정확패턴(j=-1 회피)
일관성 정책 — 모든 CIF 라이브러리
입력 정규화 패턴 (전 라이브러리 적용):
javascript함수 X_정규화(씨앗) {
변수 x값 = 맵꺼내(씨앗, "x")
만약 (x값 == -1) {
; 트릿 입력 — 디코딩 (CIF최적화/합성)
만약 (길이(씨앗) == 36) {
반환 CIF3_씨앗디코딩(씨앗)
}
} 아니면 {
; 맵 입력 — 트릿으로 인코딩 (CIF필터)
반환 CIF3_씨앗인코딩(...)
}
반환 씨앗
}
각 라이브러리는 내부 처리 방식에 따라 트릿 또는 맵으로 정규화. 호출자는 형식 무관하게 호출 가능.
잔여 이슈
- VM 누적 틱 한도(~8000) — 1000+ 스트레스 불가
- 현재시간() ms 정밀도 한계
- CIF애니메이션도 같은 패턴 적용 가능 (현재 단일 형식)
다음 단계 후보
- CIF애니메이션 v1.1 확장
- CIF변환 PPM/BMP 더 많은 라운드트립 테스트
- GUI 코드 (CIFStudio_GUI.한선) 결함 우회 코드 청소 — 이제 라이브러리가 자동 정규화하므로 GUI에서 수동 처리 불필요