배경
ASCII 아트는 ASCII 텍스트를 사용하여 모양을 만들어 이미지를 만드는 방법입니다.
앨리어싱은 문자 크기 인 ASCII 아트의 큰 "픽셀"에 의해 생성되는 효과입니다. 이미지가 고르지 않고 잘 보이지 않습니다. 앤티 앨리어싱은 그래디언트를 만들고 ASCII 아트의 가장자리를 부드럽게하여이 효과를 제거합니다.
도전
당신의 도전은 ASCII 아트를 사용하고 앤티 앨리어싱 된 버전을 출력 할 수있는 가장 짧은 프로그램을 작성하는 것입니다.
어떤 종류의 앤티 앨리어싱?
ASCII 아트는 모두 공백과 공백이 아닌 두 가지 유형의 기호로 구성됩니다. 공백이 아닌 각 문자에 대해 프로그램은 앤티 앨리어싱이 필요한 위치에 있는지 확인해야합니다. 그렇다면 올바른 문자로 바꿔야합니다. 그렇지 않은 경우 캐릭터는 그대로 유지됩니다.
캐릭터를 앤티 앨리어싱해야하는지 어떻게 알 수 있습니까? 답은 문자 바로 위, 아래, 왼쪽 및 오른쪽에있는 문자에 따라 다릅니다 ( 대각선 아님). 여기에 안티 앨리어싱이 필요한 경우의 차트 ?
와 x
비 공백 문자에 대한 설 수는.
x? -> d?
? ?
?x -> ?b
? ?
? ?
?x -> ?F
? ?
x? -> Y?
x -> ; Note: This character has been changed from _ to ;
? ?
? ?
x -> V
?x -> ?>
x? -> <?
x -> @
입력 (및 사전 앨리어싱 제거 ASCII 아트 예제)
먼저, 두 줄의 입력 (STDIN에), 숫자 H 뒤에 숫자 W가 있습니다. 그런 다음 정확히 W 문자의 H 행이 있습니다 (줄 바꾸기 제외). 다음 줄은 앤티 앨리어싱이 필요한 ASCII 기술입니다. 다음은 입력 예입니다 (아름답 지 않지만 테스트).
7
9
888888
888888
999 98 7
666666
666666
6666
6
출력 (및 앤티 앨리어싱 된 아트 예제)
프로그램은 앤티 앨리어싱 된 ASCII 아트 (같은 치수의)를 STDOUT으로 출력해야합니다. 위의 입력에 대한 출력은 다음과 같습니다. 경계 문자가 경계 공백으로 처리되는 방식에 주목하십시오.
d8888>
d8888F
<99 98 @
Y6666b
Y6666>
Y66F
V
이것은 코드 블록의 줄 간격으로 인해 좋아 보이지 않을 수 있으며 더 큰 ASCII 아트에서는 더 좋아 보이고 품질은 사용 된 정확한 글꼴에 따라 다릅니다.
또 다른 예
입력
12
18
xx xxx xxx
xxxx xxx xxx
xxxxxx xxx xxx
xxx xxx xxx xxx
xxxx xxx xxx xxx
xxxxxx xxx xxx
xxxx xxx xxx
x xx xxx xxx x
xx xxx xxx xx
xxx xxx xxx xxx
xxxx xxx xxx xx
xxxxx xxx xxx x
산출
db <xb <xb
dxxb Yxb Yxb
dxxxxb Yxb Yxb
dxx xxb xxb xxb
Yxxb xxF xxF xxF
YxxxxF dxF dxF
YxxF dxF dxF
; YF dxF dxF ;
xb dxF dxF dx
xxb <xF <xF <xx
xxxb Yxb Yxb Yx
Yxxx> Yx> Yx> V
규칙, 제한 및 참고
귀하의 프로그램은 인쇄 가능한 ASCII 문자로만 작성되어야 프로그램에서 예술을 만들 수 있습니다. 그 외에 표준 코드 골프 규칙이 적용됩니다.
_
되었습니다;
.