クーリエセプション


13

クーリエセプション

プログラムは、入力として任意の文字列を受け入れ、Courierで入力文字列を示すピクセル画像を出力する必要があります。abdegopqABDPQR黒のピクセルで囲まれた「穴」などのすべての文字も黒で塗りつぶす必要があります。

入力

プログラムは、任意のASCII文字列を入力として受け入れられる必要があります。別の入力を受け入れるためにプログラムコード自体を変更する必要がない限り、入力は任意の方法にできます。(たとえば、読み取られるファイルのファイル名を除く。)標準的な抜け穴はありません。各入力には少なくとも1つの印刷可能な文字が含まれていると想定できます。

出力

出力は、指定された「穴」が埋められたCourierで記述された文字列(黒、背景白)を示す白黒(グレーなし)ピクセルグラフィックでなければなりません。文字列全体のフォントサイズは一定である必要があり(つまり、異なる文字ごとに異なるスケーリングがないことを意味します)、フルサイズの文字(たとえばABCDEFGHIJKLMNOPRSTUVWXYZjとQは大きい)の高さは少なくとも10pxでなければなりません。(ファイルに書き込む必要はありません。JavaScriptのキャンバスなどのピクセルグラフィックとして生成される限り、どんな種類の表示でも構いません。)このグラフィックを回答と共に投稿してください。

courier.ttf /フォントライブラリへのアクセスが許可されています。

プログラムは、黒ピクセルの数もカウントして、コンソールまたは最終的に望ましい出力方法を書き込む必要があります。

スコア

スコアは次のように評価されます。完全なプログラムコードは、プログラムへの入力文字列として使用する必要があります。黒いピクセルの数がスコアになります。印刷不能または非ASCII文字を含むプログラムコードは許可されません。(標準の抜け穴と同様に。)スコアが低いほど良い。


出力は白黒として指定されているため、グレーのピクセルは許可されません。また、エンコーディングについてお問い合わせいただきありがとうございます。これは、フォントのためにASCIIに制限されます。
flawr

1
明確化が必要な少なくとも2つの重大な問題があります。まず、プログラムがCourier.ttfおよびそれを使用できるフォントライブラリへのアクセスを許可されているかどうかは不明です。第二に、非ASCII文字を含まないプログラムを真剣に禁止するつもりですか?
ピーターテイラー14

はい、Courier.ttfおよびフォントライブラリへのアクセスは許可されています-そうでなければ意味がありません、ありがとう。非ASCII文字に依存する主要言語を思い付くことができませんでした-非ASCII文字を必要とする言語を知っていますか?
flawr 14

1
@flawr APL。Mathematicaでは、Unicode文字を使用していくつかのことを短縮できます。
マーティンエンダー14

ImageMagickには許可されていますか?
デジタル外傷14

回答:


12

Mathematica、4864ピクセル

l = ImageData[Binarize[Rasterize[Style[j, FontSize -> 15]], .71]]
i = {{1, 1}}
While[Length[i] > 1 - 1,
 {r, c} = j = i[[1]]; l[[r, c]] = 2; i = i[[2 ;; -1]];
 If[FreeQ[i, {r, c} = J = j + #] && l[[r, c]] == 1, 
    i = i~Join~{J}] & /@
  {{1, 1 - 1}, {1 - 1, 1}, {-1, 1 - 1}, {1 - 1, -1}}
 ]
Image[l = l /. 1 -> 1 - 1 /. 2 -> 1]
Count[l, 1 - 1, {2}]

写真は次のとおりです。

ここに画像の説明を入力してください

Mathematicaでは、「プログラム」を書くとき、スニペットを書くだけです。したがって、これは入力が保存されていることを期待しj、最後に返されるのは画像とカウントです。また、境界チェックを行わないため、多くのエラーlが発生しますが、とにかく望ましい結果が得られます。

ここで、%最後の出力を指します。

アルゴリズムのアイデアを提供してくれたGeobitsに感謝します。左上隅の画像を無効な強度で塗りつぶし、残りの白いピクセルをすべて黒いピクセルに、無効なピクセルを白いピクセルに置き換えます。

このFreeQチェックは、プログラムが正しく機能するために実際に必要なわけではなく、妥当な時間で完了するために必要なことに注意してください。省略した場合、実際には約300ピクセル少なくなります。


カウントはプログラム自体の一部である必要があります!それ以外は素晴らしい解決策ですが、どの文字を(変数名として)使用するピクセルが最も少ないかを計算しましたか?
flawr

@flawr yes :)(今ではすべての人が)(1秒でカウントを修正)
マーティンエンダー14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.