先日四角い紙の上でだらだらしている間、私は上記の数字用のネガティブスペースフォントを思いついた。まだ見つけていない場合、上記の形状の間のスペースは黄金比1.618033988749になります。この課題では、タスクは入力として数値を取得し、上記の例が示すように正確にレンダリングすることです。
これらの作成方法を次に示します。すべての行は通常のグリッド上にあるため、個々の数字は少数のグリッドセルで構成されます。10桁の形状は次のとおりです(このチャレンジでは小数点は無視します)。
はい、7は上部の黄金比の例とは異なります。私はちょっとそれを台無しにしました。これを使用します。
各桁の高さは5セル、幅は3セルです。数字をレンダリングするには、数字のペアの間に空の列が1つだけ存在するように、すべての数字を隣り合わせに配置することを想像できます。たとえば、319
入力として次のように記述します。
最初と最後の空の列を1つ追加することに注意してください。次に、セルを反転します。
出力は、結果のポリゴンの境界になります。
もちろん、レンダリングされた出力が同じように見える限り、他の方法で結果を生成できます。
入力
- STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を文字列または数字のリストとして取得して、プログラムまたは関数を作成できます。(先行ゼロをサポートできないため、数字を使用することはできません。)
- 入力に16桁はないものと想定できます。
出力
- 出力は、画面に表示されるか、共通の画像形式でファイルに書き込まれます。
- ラスターグラフィックスとベクターグラフィックスの両方を使用できます。
- いずれの場合も、基礎となるグリッドのセルのアスペクト比は1である必要があります(つまり、セルは正方形である必要があります)。
- ラスターグラフィックの場合、各セルは少なくとも20 x 20ピクセルをカバーする必要があります。
- 行は、セルサイズの10%を超えてはなりません。ここでエイリアスが発生するため、1ピクセルまたは2ピクセルの余裕を与えたいと思います。
- 線と背景には、はっきりと区別できる2つの色を使用できますが、線によって作成される形状は塗りつぶしてはなりません(つまり、内側も背景色にする必要があります)。
- 各閉ループ内にギャップがあってはなりません。
- もちろん、結果全体が表示される必要があります。
テストケース
10の入力があります。これらの入力は、隣接する数字のすべての可能なペアと、すべての可能な先頭および末尾の数字を一緒にカバーします。
07299361548
19887620534
21456837709
39284106657
49085527316
59178604432
69471338025
79581224630
89674235011
97518264003
そして、これらの期待される結果は次のとおりです。
コードが1桁の場合でも機能することを確認してください(明らかなはずなので、ここに期待する結果を含めたくはありません。テストケースセクションは、それなりに肥大化しています)。