バックグラウンド
ASCIIアートとは、ASCIIテキストを使用して形状を形成することにより画像を作成する方法です。
エイリアシングは、文字のサイズであるASCIIアートの大きな「ピクセル」によって作成される効果です。画像はブロック状になり、見にくくなります。アンチエイリアスは、グラデーションを作成し、ASCIIアートのハードエッジを柔らかくすることにより、この効果を取り除きます。
チャレンジ
あなたの挑戦は、ASCIIアートの一部を取り、アンチエイリアスされたバージョンを出力する、可能な限り短いプログラムを書くことです。
どのようなアンチエイリアシングですか?
ASCIIアートはすべて、スペースと非空白の2種類のシンボルで構成されます。空白文字以外の文字ごとに、プログラムは、アンチエイリアス処理が必要な位置にあるかどうかを判断する必要があります。正しい場合は、正しい文字に置き換える必要があります。そうでない場合、キャラクターは同じままです。
キャラクターにアンチエイリアスをかける必要があるかどうか、どのようにしてわかりますか?答えは、キャラクターのすぐ上、下、左、右にあるキャラクターに依存します(対角線ではありません)。ここでアンチエイリアシングが、必要とされるときのチャートである?
とx
任意の非空白文字を表すことができますが。
x? -> d?
? ?
?x -> ?b
? ?
? ?
?x -> ?F
? ?
x? -> Y?
x -> ; Note: This character has been changed from _ to ;
? ?
? ?
x -> V
?x -> ?>
x? -> <?
x -> @
入力(および例の事前アンチエイリアシングASCIIアート)
最初に、2行の入力(STDINへ)があります。数字Hの後に数字Wが続きます。その後、それぞれ正確にW文字のH行(改行を除く)があります。これらの次の行は、アンチエイリアス処理が必要なASCIIアートです。以下に入力例を示します(美しくはありませんが、テストです):
7
9
888888
888888
999 98 7
666666
666666
6666
6
出力(およびアンチエイリアスアートの例)
プログラムは、アンチエイリアス処理された(同じ次元の)ASCIIアートをSTDOUTに出力する必要があります。上記の入力の出力は次のとおりです。境界文字が境界空白としてどのように扱われるかに注意してください。
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文字のみで記述し、プログラムからアートを作成できるようにする必要があります。それ以外は、標準のコードゴルフ規則が適用されます。
_
なった;
からです