标识是对哈希值的直观描述,通常由几何形状的对称排列制成。您的默认Stack Exchange头像是一个identicon。挑战在于创建“ wordenticons”,即简单的基于文本的identicon图标版本,适用于小写字母(即单词)字符串。
挑战
编写一个接受字符串S并输出其wordenticon的程序或函数。S保证为非空,并且仅包含小写英文字母字符az。您可以选择假设S具有尾随换行符。
S的wordenticon是文本的正方形网格,其边长2*length(S)
由空格(
),竖线(|
)和横线(―
)组成。
要生成S的词对像,形成一个正方形网格,其中每一列对应于S的一个字母(按从左至右的正常阅读顺序),每一行对应于S的一个字母(按从上至下的正常阅读顺序) )。
例如,如果S是food
我们的初始网格,
food
f....
o....
o....
d....
在哪里.
只是一个占位符。
对于.
网格中的每个空白点(每个):
- 如果列字母来排字母之前按字母顺序,替换
.
用|
。 - 如果列字母来排字母后按字母顺序,替换
.
用―
。 - 如果列和行字母相同,则
.
用
这是food
每个步骤之后的示例:
添加
|
的:food f...| o|..| o|..| d....
添加
―
的:food f.――| o|..| o|..| d―――.
添加
food f ――| o| | o| | d―――
要完成单词输入法,请删除包含单词的多余行和列
――|
| |
| |
―――
然后将整个事物水平镜像
――||――
| || |
| || |
――― ―――
最后再垂直地镜像
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
导致2*length(S)
边长的文本网格是最终的wordenticon。
例子
这是一些其他wordenticon示例。请注意,不同的单词可以具有相同的词组,某些词组可以完全由空格组成(不幸的是,降价并不想呈现那些空格)。
food
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
mood
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
foof
―― ――
| || |
| || |
―― ――
―― ――
| || |
| || |
―― ――
fool
――――――
| || |
| || |
|―― ――|
|―― ――|
| || |
| || |
――――――
a [2*2 grid of spaces]
to
||
― ―
― ―
||
it
――
| |
| |
――
tt [4*4 grid of spaces]
abc
――――
| ―― |
|| ||
|| ||
| ―― |
――――
and
――――
| || |
|― ―|
|― ―|
| || |
――――
but
――――
| || |
|― ―|
|― ―|
| || |
――――
you
||||
― ―― ―
―| |―
―| |―
― ―― ―
||||
bob
― ―
| || |
― ―
― ―
| || |
― ―
cat
|――|
― ―― ―
|| ||
|| ||
― ―― ―
|――|
cart
|――――|
― ―――― ―
|| ―― ||
||| |||
||| |||
|| ―― ||
― ―――― ―
|――――|
todo
||||||
― | | ―
―― ―― ――
― | | ―
― | | ―
―― ―― ――
― | | ―
||||||
mice
||||||
― |||| ―
―― ―― ――
――| |――
――| |――
―― ―― ――
― |||| ―
||||||
zyxw
||||||
― |||| ―
―― || ――
――― ―――
――― ―――
―― || ――
― |||| ―
||||||
banana
|―|―||―|―|
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|―|―||―|―|
codegolf
――――――――――――――
| ||| |||| ||| |
|― ―――――――――― ―|
|―| ―――――――― |―|
|―|| ――||―― ||―|
| ||| |||| ||| |
|―|||― || ―|||―|
|―||――― ―――||―|
|―||――― ―――||―|
|―|||― || ―|||―|
| ||| |||| ||| |
|―|| ――||―― ||―|
|―| ―――――――― |―|
|― ―――――――――― ―|
| ||| |||| ||| |
――――――――――――――
programming
―||―||||||||||||―||―
| || |||||||||||| || |
―― |―||||||||||||―| ――
――― ―|―――― ――――|― ―――
| || |||||||||||| || |
――――― ―――――――――― ―――――
―――|―| |―||―| |―|―――
―――|―| |―||―| |―|―――
―――|―|―― ―||― ――|―|―――
―――|―|||| || ||||―|―――
――― ―|―――― ――――|― ―――
――― ―|―――― ――――|― ―――
―――|―|||| || ||||―|―――
―――|―|―― ―||― ――|―|―――
―――|―| |―||―| |―|―――
―――|―| |―||―| |―|―――
――――― ―――――――――― ―――――
| || |||||||||||| || |
――― ―|―――― ――――|― ―――
―― |―||||||||||||―| ――
| || |||||||||||| || |
―||―||||||||||||―||―
abcdefghijklm
――――――――――――――――――――――――
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
|||||||||||| ||||||||||||
|||||||||||| ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
――――――――――――――――――――――――
计分
这是代码高尔夫,以字节为单位的最短代码获胜。Tiebreaker转到较早的答案。
笔记
- 您代码中任何水平横线(
―
)的实例都可以算作1个字节,而不是实际占用的3个UTF-8字节。(最多十个实例。) - 如果需要,您可以使用常规破折号(
-
)代替水平杠(―
)。 - 禁止在wordenticon的行中删除或添加尾随空格(即使形状保持不变)。它应该是确切的
2*length(S)
边长文本方块。 - 输出wordenticon可以可选地具有单个尾随换行符。
programming
,and
并codegolf
但你忘了puzzles
...