Arka fon
ASCII sanatı, şekiller oluşturmak için ASCII metnini kullanarak görüntü oluşturma pratiğidir.
Aliasing, ASCII resminin karakter büyüklüğü olan büyük "pikselleri" tarafından oluşturulan efekttir. Görüntü tıkalı ve görülmesi zorlaşıyor. Kenar yumuşatma, bu efekti bir degrade oluşturarak ve ASCII sanatının sert kenarlarını yumuşatarak giderir.
Meydan okuma
Buradaki zorluk, bir ASCII sanatının parçası olacak ve anti-alias olan bir versiyonun çıktısını alabilecek en kısa programı yazmak.
Ne tür bir anti-aliasing?
ASCII sanatının tamamı iki tür sembolden oluşacaktır: Boşluklar ve boşluk olmayanlar. Her boşluk olmayan karakter için, programınızın kenar yumuşatması gereken bir konumda olup olmadığını belirlemesi gerekir. Öyleyse, doğru karakterle değiştirmeniz gerekir. Değilse, karakter aynı kalır.
Bir karakterin kenar yumuşatılması gerekip gerekmediğini nasıl anlarsınız? Cevap, karakterin hemen üstünde, altında, solunda ve sağında bulunan karakterlere ( köşegenlere değil ) bağlıdır. Anti-aliasing'in ne zaman yapılmasının gerektiği, beyaz olmayan herhangi bir karakterin nerede ?
ve ne x
zaman durabileceğini gösteren bir grafik .
x? -> d?
? ?
?x -> ?b
? ?
? ?
?x -> ?F
? ?
x? -> Y?
x -> ; Note: This character has been changed from _ to ;
? ?
? ?
x -> V
?x -> ?>
x? -> <?
x -> @
Girdi (ve örneğin kenar yumuşatma öncesi ASCII resmi)
İlk önce iki giriş satırı (STDIN'a), ardından H ve W sayısı olacak. Her biri tam olarak W karakterli H satırları olacak (yeni satır hariç). Aşağıdaki satırlar, kenar yumuşatma uygulaması gereken ASCII sanatı olacaktır. İşte bir örnek giriş (güzel değil, bir test):
7
9
888888
888888
999 98 7
666666
666666
6666
6
Çıktı (ve diğer kenar yumuşatma sanatı)
Programınız, kenar yumuşatma uygulanmış ASCII sanatını (aynı boyutlarda) STDOUT'a çıkarmalıdır. Yukarıdaki giriş için çıktı. Kenarlık karakterlerinin kenarlık boşluğu olarak nasıl değerlendirildiğine dikkat edin.
d8888>
d8888F
<99 98 @
Y6666b
Y6666>
Y66F
V
Bu iyi görünmeyebilir (kod bloğundaki satırlar arasındaki boşluk nedeniyle), daha büyük ASCII resminde daha iyi görünür ve kalite kullanılan yazı tipine bağlıdır.
Başka bir örnek
Giriş
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
Çıktı
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
Kurallar, Kısıtlamalar ve Notlar
Programınız yalnızca programların dışına çıkarılabilmesi için yalnızca yazdırılabilir ASCII karakterleriyle yazılmalıdır. Bunun dışında standart kod-golf kuralları geçerlidir.
_
haline gelmiştir;
daha iyi çalıştığı için.