介绍
在大多数字体中,除大写字母之外,所有大写字母字符BDO
都有单行,大约接触到字符边界矩形的四个角中的一些:ACEFGHIJKLMNPQRSTUVWXYZ
。
例如,两条腿A
“触摸”角色的左下角和右下角。同样,C
触摸其右上角和右下角(虽然有点弯曲但足够靠近)。L
仅用单行触摸它的左上角和右下角。的左下角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
根据上述规则,编写可能的最短程序(以字节为单位),以一棵完全连接的大树输出所有字符。每个字符必须出现一次。使用空格表示空白。
例
这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
不连接任何东西。您必须使用上表中的角连接。 - 并非所有可连接的角都需要连接到某物。可连接和不可连接的角可能彼此相邻。
- 输出到标准输出。没有输入。
- 包括彼得·泰勒(Peter Taylor)所做的以斜线表示的连通性图很有帮助,但并非必需。
更新:
githubhagocyte 在Github上进行了字母树有效性检查。