深奥的编程语言恶毒对字节值有一个有趣的操作,它称之为“编织”。它本质上是字节的八位的排列(不管我们从哪一端开始计数,因为模式是对称的):
为了方便起见,下面是排列的另外两个表示。作为一个循环:
(02467531)并作为映射对的列表:
[[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]]您的任务是使用─、│、┌、┐、└、┘、┼ (Unicode代码点: U+2500、U+2502、U+250C、U+2510、U+2514、U+2518、U+253C)来可视化这个排列。这种形象化应满足以下限制:
第一行也是最后一行正好是:
0 1 2 3 4 5 6 7在这两者之间,您可以使用最多15个字符的行数来满足您的方框绘图字符(您至少需要4行)。这些行应该垂直地开始于第一行中的一个数字下面,在最后一行的对应数字上方垂直结束。这八条线必须连接起来,并且只能通过┼ (它总是一个交叉,永远不会有两个接触的转弯线)。线路的确切路径取决于你(找到一个特别的金色布局是这一挑战的核心)。一个有效的产出是:
0 1 2 3 4 5 6 7
│ │ └─┼┐│ │ └┐│
└─┼─┐ ││└─┼─┐││
┌─┘ │ ││ │ │││
│ ┌─┼─┘│ │ │││
│ │ │ ┌┼──┘ │││
│ │ │ │└┐ ┌─┼┼┘
│ │ │ │ │ │ │└┐
0 1 2 3 4 5 6 7但是,正确连接正确数字的任何其他布局也是可以的。请在你的答案中显示你选择的输出。
您可以编写程序或函数,并且不会接受任何输入。将图表输出到STDOUT (或最近的选项),或者作为函数返回字符串或字符串列表(每个字符串代表一行)。
适用标准的密码-高尔夫规则,因此最短的代码(以字节为单位)获胜。
发布于 2016-06-28 03:26:30
"│ ┌┘│ │└┐ │└┐└┐""┌┘└┼┐└┼┐ └┼┐└┐""└┼┐│└┐┌┘└┐┌┘│""┌┼─┘"3*"│┌┘"+8r' j;)在网上试试! (在线解释器中的对齐有点混乱)
实际上,这里有一个巨大的优势--所有的方框绘图字符都在CP437中,因此每个字符只有一个字节。虽然理论上每个需要的字符可以用4位编码(因为只有9个唯一的字符),但是压缩字符串所节省的31个字节会因为实际的字符串处理能力非常差而丢失。这也意味着任何8x4配置都会得到相同的分数。由于8x4似乎是(垂直)最短的可能配置,这是最优的。
感谢马丁3字节!
感谢TimmyD增加了4个字节!
解释:
"│ ┌┘│ │└┐ │└┐└┐""┌┘└┼┐└┼┐ └┼┐└┐""└┼┐│└┐┌┘└┐┌┘│""┌┼─┘"3*"│┌┘"+8r' j;)
"│ ┌┘│ │└┐ │└┐└┐""┌┘└┼┐└┼┐ └┼┐└┐""└┼┐│└┐┌┘└┐┌┘│""┌┼─┘"3*"│┌┘"+ push the individual lines, using string multiplication to shorten repeated sections
8r' j push the string "0 1 2 3 4 5 6 7" (range(8), join on spaces)
;) make a copy and move it to the bottom of the stack发布于 2016-06-28 09:01:26
@echo 0 1 2 3 4 5 6 7
@echo ³ÚÙ ³ÚÙ ³ÚÙ ³ÚÙ
@echo ÀÅÄ¿ÀÅÄ¿ÀÅÄ¿ÀÅ¿
@echo ÚÙÚÅÄÙÚÅÄÙÚÅÄÙ³
@echo ³ ³À¿ ³À¿ ³À¿ ³
@echo 0 1 2 3 4 5 6 7使用@TimmyD的输出。这可能也适用于Windows,但我的代码页是CP850,而不是CP437。
发布于 2016-06-27 19:30:15
lambda s="0 1 2 3 4 5 6 7\n":s+"│┌┘ │┌┘ │┌┘ │ │\n└┼─┐└┼─┐└┼─┐└┐│\n┌┘┌┼─┘ └┐│┌┼─┼┘\n│ │└┐ ┌─┼┘│└┐└┐\n"+s返回一个字符串。
感谢@Mego为您节省了2个字节!
人物身体的学分转到@TimmyD!
https://codegolf.stackexchange.com/questions/83899
复制相似问题