Ini gambarnya:
%%%%%%%%%%%%%
% Hello, %
% world! %
%%%%%%%%%%%%%
Tapi itu terlalu membingungkan untuk dikalkulasi oleh otak kita yang berukuran terlalu kecil. Jadi kami rata-rata seperti ini:
Bagilah menjadi 2 x 2 bagian. Jika gambar berakhir sebelum bagian selesai, bayangkan ada ruang di sana.
Rata-rata nilai karakter ASCII di setiap bagian.
Bulatkan rata-rata ini dan ubah menjadi karakter ASCII.
- Akhirnya, ganti semua karakter di bagian ke karakter rata-rata.
Ulangi ini untuk semua bagian.
Jadi rata-rata gambar di atas terlihat seperti ini:
$$>>II99######
$$>>II99######
$$##88KKGG####
$$##88KKGG####
Tugas Anda: Tulis program yang mengambil gambar ASCII sebagai input dan output rata-rata.
Catatan Integer dibulatkan oleh fungsi floor(x+0.5)
atau fungsi serupa - dengan kata lain, babak dibelah dua.
Jawaban:
JavaScript (ES6), 159 byte
Mengambil string multiline sebagai input.
sumber
MATL ,
3230 byteInput adalah array char 2D, dengan baris dipisahkan oleh
;
.Cobalah online!
Penjelasan
sumber
Pyth, 58 byte
Cobalah online!
sumber
Lua,
382376367353348 byteBekerja pada baris perintah; menerima string seperti test case.
sumber
Ruby,
235230 bytesumber
Python, 319 byte
Indentasi ke-2 adalah tab.
Hal-hal sebelum
C
padding,C
adalah proses rata-rata untuk huruf tunggal dan sisanya adalah outputsumber
R,
433399 byteSaya mulai putus asa karena hal ini tampaknya tidak bersaing sebagai heck. Mencetak
untuk test case.
Jika Anda memberi makan di 7 × 3
hasilnya akan
karena dibagi oleh 2 dll. dll.
Tidak Disatukan:
Lihat saja bagaimana menangani contoh cantik ini (milik chris.com):
Setelah:
sumber
Ruby,
180158148128 + 4124 + 4 = 128 byteJalankan dengan
$ ruby -nl
(+4 byte untuk-nl
bendera). Mengambil input pada STDIN.Lihat di ideone: http://ideone.com/brmP3L
Tidak dikelompokkan & penjelasan
Per
man ruby
,-n
bendera "[c] akan memudarkan Ruby untuk menganggap loop berikut di sekitar skrip Anda ...while gets ... end
". Variabel khusus$_
berisi baris terakhir yang dibaca olehgets
. The-l
bendera menghilangkan\n
dari setiap baris, setara dengan$_.chop!
.Variabel khusus
$.
adalah jumlah baris yang telah dibaca sejauh ini, dan$<
adalah STDIN. Pasangan karakter dari setiap baris kedua akan di-zip dengan baris sebelumnya. String format%2s%2s
menggabungkan karakter dan membalutnya dengan spasi, lalu karakter dirata-ratakan.sumber
w=s=~/$/
lebih pendek untuk menghitung lebar awal. Juga kembalikan string yang dihitung alih-alih dicetak karena itu dianggap sebagai keluaran