Фон
Мистецтво ASCII - це практика створення зображень, використовуючи текст ASCII для формування фігур.
Згладжування - це ефект, створений великими «пікселями» мистецтва ASCII, розміром із символів. Зображення стає блокуючим і важко помітним. Антизгладжування знімає цей ефект, створюючи градієнт і пом’якшуючи жорсткі краї мистецтва ASCII.
Змагання
Ваше завдання полягає в тому, щоб написати найкоротшу можливу програму, яка займе частинку мистецтва ASCII і виведе версію, яка була анти-псевдонім.
Що це за анти-згладжування?
Все мистецтво ASCII буде складатися з двох типів символів: Пробіли та пробіли. Для кожного непробільного символу ваша програма повинна визначити, чи перебуває він у такому положенні, де його потрібно антиаліас. Якщо це так, то вам потрібно замінити його правильним символом. Якщо ні, то персонаж залишається таким же.
Звідки ви знаєте, чи потрібно персонажу бути анти-псевдонімом? Відповідь залежить від символів, які знаходяться безпосередньо вгорі, внизу, ліворуч та праворуч від символу ( не діагоналі ). Ось діаграма, коли потрібно згладжування, де ?
і x
може стояти будь-який символ, що не має пробілів.
x? -> d?
? ?
?x -> ?b
? ?
? ?
?x -> ?F
? ?
x? -> Y?
x -> ; Note: This character has been changed from _ to ;
? ?
? ?
x -> V
?x -> ?>
x? -> <?
x -> @
Введення даних (та приклад попереднього згладжування ASCII art)
По-перше, буде два рядки введення (до STDIN), число H, а потім число W. Потім буде H рядків з точністю W символів кожен (виключаючи новий рядок). Ці наступні рядки стануть мистецтвом ASCII, яке потрібно антизадачно. Ось приклад введення (не красивий, але тестовий):
7
9
888888
888888
999 98 7
666666
666666
6666
6
Вихідні дані (і приклад антизаданого мистецтва)
Ваша програма повинна виводити STDOUT на ASCII мистецтво (тих же розмірів), яке було анти-псевдонімом. Ось вихід для вищевказаного входу. Зауважте, як символи кордону трактуються як пробіли, що межують.
d8888>
d8888F
<99 98 @
Y6666b
Y6666>
Y66F
V
Це може виглядати не так добре (через пробіл між рядками в кодовому блоці), це виглядає краще при більшій графіці ASCII, а якість залежить від точного шрифту.
Ще один приклад
Вхідні дані
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
Вихідні дані
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
Правила, обмеження та примітки
Ваша програма повинна бути написана лише символами для друку ASCII, щоб ми могли робити мистецтво з програм. Крім цього, застосовуються стандартні правила коду-гольфу.
_
стала;
тому, що вона працює краще.