Tugas
Tulis sebuah program atau fungsi yang mengambil gambar lebar wdan tinggi h, dan dua bilangan bulat a <= w/2dan b <= h/2, dan menampilkan representasi seni gambar ascii, dengan dimensi ax b.
Seni ascii harus dihasilkan melalui langkah-langkah berikut (atau proses lain dengan output yang sama):
Mengubah ukuran
wxhgambar untuk2ax2b. Warna piksel(x, y)dalam gambar yang diubah ukurannya harus sama dengan rata-rata warna semua piksel dari gambar asli di dalam persegi panjang dengan sudut-sudut berikut:(floor[x * w/2a], floor[y * h/2b]) (ceil[(x+1) * w/2a], ceil[(y+1) * h/2b])Gambar yang diubah ukurannya harus dideaturasi dengan mengambil rata-rata komponen warna merah, hijau, dan biru, dan mengatur setiap komponen dengan rata-rata ini.
Karakter harus dikeluarkan untuk setiap blok 2x2 piksel, mengikuti aturan di bawah ini:
- Biarkan
e = 3 - floor[color/64], di mana warna merujuk ke komponen merah dari warna piksel kiri atas (dalam kisaran 0..255). Biarkanf,,gdanhlihat nilai ini, tetapi masing-masing untuk piksel kanan atas, kiri bawah, dan kanan bawah. - Membiarkan
zmenjadi rata-ratae,f,g,h. - Keluarkan karakter yang sesuai dengan yang berikut ini (putih mewakili piksel di mana
3 - floor[color/64]nol, dan abu-abu mewakili bukan nol).
= Keluarkan spasi ( )
atau
= Keluaran "jikae (or f) >= 2dan'sebaliknya.
atau
= Keluaran ,jikag (or h) >= 2dan.sebaliknya.
atau
= Output-
atau
= Output;
= Keluaran \
= Keluaran /
= Keluaran J
= Keluaran L
= Keluaran 7
= Keluaran P
z = 1: output*.z = 2: outputC.z = 3: output#.
- Biarkan
Catatan lain: Semua rata-rata yang diambil dalam langkah-langkah di atas harus menggunakan pembagian integer (yaitu pembulatan ke 0).
Anda dapat menggunakan perpustakaan untuk membaca gambar, tetapi perpustakaan mungkin tidak digunakan untuk langkah-langkah mengubah ukuran dan desaturasi.
Memasukkan
Program Anda akan mengambil tiga bagian data:
- Sebuah gambar. Gambar ini mungkin dalam format apa pun pilihan Anda (mis. PNG, PPM)
- Lebar seni ascii (dalam jumlah karakter)
- Ketinggian seni ascii (dalam jumlah karakter)
Input dapat dibaca melalui STDIN, diteruskan sebagai argumen baris perintah, disimpan sebagai variabel, dll.
Keluaran
Program Anda akan menampilkan seni ascii yang dihasilkan dari gambar dan melalui proses yang dijelaskan di atas. Setiap baris harus memiliki lebar yang sama (lebar dilewatkan sebagai input), dan tidak ada spasi tambahan yang dapat ditambahkan atau dihapus. Baris terakhir mungkin memiliki baris tambahan, tetapi ini tidak wajib. Garis kosong (garis dengan spasi saja) tidak boleh dihilangkan.
Contohnya
Semua gambar diambil dari Wikipedia dan dirilis ke domain publik. Program Anda diharapkan bekerja untuk semua gambar dan input yang valid.

Lebar = 52, Tinggi = 25:
.-- *** - ----.
- ********** L .-- .-- 7 ---- P-
.J ****************. . ********* \.
, ****************** L \ J ********** '.
- ********************. J *********** L /
J *********************; ./*************.L
; ************************ **************; 7;
. ********************** '. *************** ;; *
; **********************; ***************; J *.
*************************** P ******** '**;
C ********************* C ******* P; *******. **;
C ********************** J ***************; **;
C *********************; ****************. **;
********************** '*************** P; **
J ********************* P *************** / ***
. ********************** 7 ************* 'J **;
; ******************** C "'P *********** PJ ***'
"7 ****************** C" '********** P. ** C;
'* C *************'; ********* - J ** CP
'* C ********** P 7 ** 7 ** P / - **** P
- * CCCCC * P- '7 ******** P'
'---' --- '
Lebar: 70, Tinggi: 3:
---------------------------. .----------------
J ***************************** P-J ***************** *** / J **;
---------- ********* P --------- '-------------------- - '

Lebar: 50, Tinggi: 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 *** -
'------'

Lebar: 26, Tinggi: 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
; * .- -.C; ; CCCCCCCCCCC
; **** J ** L; CCCCCCCCCCCC
; *******; 'CCCCCCCCCCCPP
'*******' CCCCCCCCCCC '
'* P-7 *' "CCCCP '-
'---
Ini kode-golf , jadi jawaban terpendek menang.