직무
폭의 화상을 얻어 프로그램이나 함수 작성 w및 높이 h, 및 두 개의 정수 a <= w/2및 b <= h/2크기로 된, 상기 이미지의 아스키 아트 표현을 출력 aX가 b.
아스키 아트는 다음 단계 (또는 동일한 출력을 가진 다른 프로세스)를 통해 생성되어야합니다.
크기 조정
wX의h이미지2aX를2b. 화소의 색(x, y)해상도 변경은 다음의 모서리 사각형 내부의 원본 이미지의 모든 픽셀의 색상의 평균과 같아야한다 :(floor[x * w/2a], floor[y * h/2b]) (ceil[(x+1) * w/2a], ceil[(y+1) * h/2b])색상의 빨강, 녹색 및 파랑 구성 요소의 평균을 취하고 각 구성 요소를이 평균으로 설정하여 크기가 조정 된 이미지의 채도를 낮추어야합니다.
아래의 규칙에 따라 각 2x2 픽셀 블록에 대해 문자를 출력해야합니다.
- 하자
e = 3 - floor[color/64]색 (0..255 범위)에서 좌측 상단의 화소의 색의 적색 성분을 지칭하는 경우,. 보자f,g하고,h이 값을 참조하지만, 오른쪽 상단에 대해, 왼쪽 아래, 각각 오른쪽 아래 픽셀. - 하자
z의 평균 수e,f,g,h. - 다음에 해당하는 문자를 출력합니다 (흰색
3 - floor[color/64]은 0 인 픽셀을 나타내고 회색은 0이 아닌 것을 나타냅니다).
= 공백을 출력합니다 ( )
또는
= 출력 "하는 경우e (or f) >= 2와'그렇지 않은 경우.
또는
= 출력 ,하는 경우g (or h) >= 2와.그렇지 않은 경우.
또는
= 출력-
또는
= 출력;
= 출력 \
= 출력 /
= 출력 J
= 출력 L
= 출력 7
= 출력 P
z = 1: 출력*.z = 2: 출력C.z = 3: 출력#.
- 하자
기타 참고 사항 : 위 단계에서 취한 모든 평균은 정수 나누기를 사용해야합니다 (즉, 0으로 반올림).
라이브러리를 사용하여 이미지를 읽을 수 있지만 크기 조정 및 불포화 단계에는 라이브러리를 사용할 수 없습니다.
입력
귀하의 프로그램은 세 가지 데이터를받습니다 :
- 이미지. 이 이미지는 원하는 형식 (예 : PNG, PPM) 일 수 있습니다.
- 아스키 아트의 너비 (문자 수)
- 아스키 아트의 높이 (문자 수)
입력은 STDIN을 통해 읽고 명령 행 인수로 전달하며 변수 등으로 저장 될 수 있습니다.
산출
프로그램은 이미지와 위에서 설명한 프로세스를 통해 생성 된 아스키 아트를 출력합니다. 각 줄은 같은 너비 (입력으로 전달 된 너비) 여야하며 추가 공간을 추가하거나 제거 할 수 없습니다. 마지막 줄에는 줄 바꿈 문자가있을 수 있지만 필수 사항은 아닙니다. 빈 줄 (공백 만있는 줄)은 생략하면 안됩니다.
예
모든 이미지는 Wikipedia에서 가져와 공개 도메인에 공개되었습니다. 귀하의 프로그램은 모든 이미지와 유효한 입력에서 작동합니다.

폭 = 52, 높이 = 25 :
.-- ***-----.
-********** L .-- .-- 7 ---- P-
.제이****************. . ********* \.
****************** L \ J ********** '.
-********************. J *********** L /
제이*********************; ./*************.엘
; ********************* PJ **************; 7;
. ************************* '. *************** ;; *
;********************** ;***************;제이*.
*********************** ******* P ******** '**;
C ************************ C ******* P; *******. **;
C ********************** J ***************; **;
씨*********************; ****************. **;
********************** '*************** P; **
J ********************* P P *************** / ***
. ********************** 7 ************* 'J **;
; ******************** C " 'P *********** PJ ***'
"7 ****************** C" '********** P. ** C;
'* C *************'; *********-J ** CP
'* C ********** P 7 ** 7 ** P /-**** P
-* CCCCC * P- '7 ******** P'
'---'--- '
폭 : 70, 높이 : 3 :
---------------------------. .----------------
J ******************************** P -J ******************** ***/제이**;
---------- ********* P --------- '-------------------- - '

폭 : 50, 높이 : 25 :
.제이---
.J * P --- J * L--.
J *** 'L -J ***********-
J ****; **************** L
;*****' .제이********************
J **** 7 ************************ P
** CC *; . ********* LJ *********** P-
** C * P 'J **********************-
7 * C * L **********************;
J * C **; **********************;
JC ** C **. ; ; ******** CCC * C ** CCCC **
"7 ***** L. 7 ***** CCCCCC **** CC ** '
-*****. -J-** C * C * CC ****** CC * '
; ** CC ***; '** CCC ***** CCCC *;
'-****--*** CCCCC ***-
'------'

폭 : 26, 높이 : 17 :
-, L
J-** L .C #
J '; * PL, C # "
.PP 7. JC7P
;; * 제이 ;; C'C;
제이; CC; L C "#
* L 7-P; *; PC
7CL *** J * PC '#
'7 # C * C # P'; P JC # C-
J # CCC # L.JC # CJCC ## C;
; #--#, CCC # CCCCCCCC
;*.- -.씨; ; CCCCCCCCCCCC
; **** J ** L; CCCCCCCCCCCC
; *******; 'CCCCCCCCCCCP
'*******'CCCCCCCCCCC '
'* P-7 *' "CCCCP '-
'---
이것은 code-golf 이므로 가장 짧은 답변이 이깁니다.