Latar Belakang
Seni ASCII adalah praktik membuat gambar dengan menggunakan teks ASCII untuk membentuk bentuk.
Aliasing adalah efek yang dibuat oleh "piksel" besar seni ASCII, yang merupakan ukuran karakter. Gambar menjadi gumpal dan sulit dilihat. Anti-aliasing menghilangkan efek ini dengan menciptakan gradien dan dengan melunakkan tepi keras seni ASCII.
Tantangan
Tantangan Anda adalah menulis program sesingkat mungkin yang akan mengambil karya seni ASCII dan akan menampilkan versi yang anti-alias.
Anti-aliasing macam apa?
Semua seni ASCII akan terdiri dari dua jenis simbol: Spasi dan non-spasi putih. Untuk setiap karakter non-spasi putih, program Anda harus menentukan apakah karakter tersebut berada pada posisi di mana ia harus anti-alias. Jika ya, maka Anda harus menggantinya dengan karakter yang benar. Jika tidak, maka karakternya tetap sama.
Bagaimana Anda tahu jika karakter perlu anti-alias? Jawabannya tergantung pada karakter yang tepat di atas, di bawah, kiri, dan kanan karakter ( bukan diagonal ). Berikut adalah bagan kapan anti-aliasing diperlukan, di mana ?
dan x
bisa berdiri untuk karakter non-spasi putih.
x? -> d?
? ?
?x -> ?b
? ?
? ?
?x -> ?F
? ?
x? -> Y?
x -> ; Note: This character has been changed from _ to ;
? ?
? ?
x -> V
?x -> ?>
x? -> <?
x -> @
Input (dan contoh seni ASCII sebelum anti-aliasing)
Pertama, akan ada dua baris input (ke STDIN), angka H diikuti oleh angka W. Kemudian akan ada baris H masing-masing karakter W (tidak termasuk baris baru). Baris-baris berikut ini akan menjadi seni ASCII yang perlu anti-alias. Berikut adalah contoh input (tidak cantik, tetapi ujian):
7
9
888888
888888
999 98 7
666666
666666
6666
6
Keluaran (dan contoh seni anti-alias)
Program Anda harus menghasilkan STDOUT the ASCII art (dengan dimensi yang sama), yang anti-alias. Berikut ini adalah output untuk input di atas. Perhatikan bagaimana karakter perbatasan diperlakukan sebagai membatasi spasi.
d8888>
d8888F
<99 98 @
Y6666b
Y6666>
Y66F
V
Ini mungkin tidak terlihat bagus (karena jarak antar baris dalam blok kode), terlihat lebih baik dengan seni ASCII yang lebih besar, dan kualitasnya tergantung pada jenis huruf yang digunakan.
Contoh lain
Memasukkan
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
Keluaran
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
Aturan, Batasan, dan Catatan
Program Anda harus ditulis dalam karakter ASCII yang dapat dicetak saja, sehingga kami dapat membuat karya seni keluar dari program. Selain itu, aturan kode-golf standar berlaku.
_
telah menjadi;
karena berfungsi lebih baik.