イントロ
ほとんどのフォントでは、大文字のアルファベット文字のすべてがBDO、文字の境界矩形の4つの角のいくつかにほぼ接触する単一の行を持っていますACEFGHIJKLMNPQRSTUVWXYZ。
たとえばA、キャラクターの左下隅と右下隅を「タッチ」する2本の脚。同様に、C右上隅と右下隅に触れます(少し曲がっていますが、十分に近いです)。L左上と右下の角に1本の線で触れているだけです。の左下隅Lは頂点であり、単一行の終わりではありません。
ここに、私が見ているStack Exchangeフォント(できればあなたも)によると、どのキャラクターがどのコーナーに触れるかを示した表を示します。1は左上、2右上、3左下、4右下です。
A: 3 4
C: 2 4
E: 2 4
F: 2 3
G: 2
H: 1 2 3 4
I: 1 2 3 4
J: 1 3
K: 1 2 3 4
L: 1 4
M: 3 4
N: 2 3
P: 3
Q: 4
R: 3 4
S: 2 3
T: 1 2
U: 1 2
V: 1 2
W: 1 2
X: 1 2 3 4
Y: 1 2
Z: 1 4
セットアップ
これらの角に接触する線のように、線が接触する角の方向に延びているので、グリッド上のこれらの文字の配置を「接続」できます。
たとえば、
A
C X
接続の左下Aと右上C、および接続の右下Aと左上のXため、接続されています。
しかしながら、
CAX
接続はある文字から次の文字まで対角線方向にのみ発生するため、接続はありません。
チャレンジ
ACEFGHIJKLMNPQRSTUVWXYZ上記の規則に従って、1つの大きな完全に接続されたツリーにすべての文字を出力する、可能な限り最短のプログラム(バイト単位)を記述します。各文字は1回だけ出現する必要があります。空のスペースにはスペースを使用します。
例
この23文字のツリーのすべてには、上記で定義した対角線接続を介して、他のどこからでもアクセスできます。
Q
A J R
C U S Y
I M N
E H X
F L T
G Z K P
V W
ノート
- ソリューションをハードコーディングできます。
- 出力には
ACEFGHIJKLMNPQRSTUVWXYZ、スペース、改行のみを含める必要があります。BDO使用されません。 - すべての接続が適切に配置されている限り、前後のスペースは問題ありません。
- 出力グリッドは、30 x 30文字(改行とスペースを含む)を超えてはなりません。
- コーナー接続のみが考慮されます。の底は
Y何にも接続していません。上の表のコーナー接続を使用する必要があります。 - すべての接続可能なコーナーが何かに接続する必要があるわけではありません。接続可能なコーナーと接続できないコーナーは、互いに接する場合があります。
- stdoutへの出力。入力はありません。
- Peter Taylorが行ったように、スラッシュで作成された接続グラフを含めることは便利ですが、必須ではありません。