งาน
เขียนโปรแกรมหรือฟังก์ชั่นที่ต้องใช้ภาพของความกว้างwและความสูงhและสองจำนวนเต็มa <= w/2และb <= h/2, และผลการแสดงศิลปะ ASCII ของภาพที่มีมิติxab
ascii art ควรสร้างผ่านขั้นตอนต่อไปนี้ (หรือกระบวนการอื่นที่มีเอาต์พุตเดียวกัน):
ปรับขนาด
wxhภาพเพื่อx2a2bสีของพิกเซล(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, ,gh - เอาท์พุทตัวละครที่สอดคล้องกับต่อไปนี้ (สีขาวหมายถึงพิกเซลที่
3 - floor[color/64]มีศูนย์และสีเทาหมายถึงไม่ใช่ศูนย์)
= ส่งออกช่องว่าง ( )
หรือ
= เอาท์พุท"ถ้าe (or f) >= 2และ'เป็นอย่างอื่น
หรือ
= เอาท์พุท,ถ้าg (or h) >= 2และ.เป็นอย่างอื่น
หรือ
= เอาท์พุท-
หรือ
= เอาท์พุท;
= เอาต์พุต \
= เอาต์พุต /
= เอาต์พุต J
= เอาต์พุต L
= เอาต์พุต 7
= เอาต์พุต P
z = 1:*เอาท์พุทz = 2:Cเอาท์พุทz = 3:#เอาท์พุท
- อนุญาต
หมายเหตุอื่น ๆ : ค่าเฉลี่ยทั้งหมดที่ดำเนินการในขั้นตอนข้างต้นควรใช้การหารจำนวนเต็ม (เช่นการปัดเศษเป็น 0)
คุณอาจใช้ห้องสมุดเพื่ออ่านภาพ แต่อาจไม่ใช้ห้องสมุดสำหรับขั้นตอนการปรับขนาดและ desaturation
อินพุต
โปรแกรมของคุณใช้ข้อมูลสามส่วน:
- รูปภาพ ภาพนี้อาจอยู่ในรูปแบบที่คุณต้องการ (เช่น PNG, PPM)
- ความกว้างของศิลปะ ASCII (จำนวนตัวอักษร)
- ความสูงของศิลปะ ASCII (จำนวนตัวอักษร)
อินพุตอาจถูกอ่านผ่าน STDIN ส่งผ่านเป็นอาร์กิวเมนต์บรรทัดคำสั่งเก็บไว้เป็นตัวแปร ฯลฯ
เอาท์พุต
โปรแกรมของคุณจะแสดงผล ASCII ที่สร้างขึ้นจากภาพและผ่านกระบวนการที่อธิบายไว้ข้างต้น แต่ละบรรทัดจะต้องมีความกว้างเท่ากัน (ความกว้างที่ผ่านเป็นอินพุต) และไม่มีการเพิ่มหรือลบช่องว่างเพิ่มเติม บรรทัดสุดท้ายอาจมีการขึ้นบรรทัดใหม่ต่อท้าย แต่ไม่บังคับ ต้องไม่เว้นบรรทัดว่าง (บรรทัดที่มีช่องว่างเท่านั้น)
ตัวอย่าง
ภาพทั้งหมดนำมาจาก Wikipedia และเผยแพร่สู่สาธารณสมบัติ โปรแกรมของคุณคาดว่าจะใช้งานได้กับภาพทั้งหมดและอินพุตที่ถูกต้อง

ความกว้าง = 52, ความสูง = 25:
.-- *** - ----
- ********** L .-- .-- 7 ---- P-
.J **************** . ********* \
, ****************** L \ J ********** '
- ******************** J *********** L /
J *********************; ./*************.L
; ********************* PJ **************; 7;
. ********************** '. ***************** ;; *
; **********************; ***************; J *
*********************** ******* P ******** '**;
C ********************* C ******* P; *******. **;
C ********************** J ***************; **;
ค*********************; **************** **.
********************** '*************** P; **
J ********************* P *************** / ***
. ********************** 7 J ************* '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 ******************* *** / J **;
---------- ********* P --------- '-------------------- -'

ความกว้าง: 50, ความสูง: 25:
.J ---
.J * P --- J * L--
J *** 'L -J *********** -
J ****; **************** L
; ***** '.J ********************
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
;; * J ;; , C'C;
J; 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 '-
'---
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดชนะ