混搭时间!
这是我的每日随机高尔夫和Optimizer的ASCII每日艺术系列的第5期。您在此挑战中提交的作品将计入两个排行榜(您可以在其中找到链接的帖子)。当然,您可以像对待其他任何代码高尔夫挑战赛一样对待它,并回答它而不必担心任何一个系列。
第5洞:钻石拼贴
正六边形始终可以用钻石平铺,如下所示:
我们将使用这些拼贴的ASCII艺术表示形式。对于边长为2的六边形,有20个此类平铺:
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
/\_\_\ /\_\_\ /\_\_\ /\_\_\ /_/\_\ /_/\_\ /\_\_\ /_/\_\ /_/\_\ /_/\_\
/\/\_\_\ /\/_/\_\ /\/_/_/\ /\/_/\_\ /\_\/\_\ /\_\/_/\ /\/_/_/\ /\_\/\_\ /\_\/_/\ /_/\/\_\
\/\/_/_/ \/\_\/_/ \/\_\_\/ \/_/\/_/ \/\_\/_/ \/\_\_\/ \/_/\_\/ \/_/\/_/ \/_/\_\/ \_\/\/_/
\/_/_/ \/_/_/ \/_/_/ \_\/_/ \/_/_/ \/_/_/ \_\/_/ \_\/_/ \_\/_/ \_\/_/
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
/_/_/\ /\_\_\ /_/\_\ /_/_/\ /_/\_\ /_/\_\ /_/_/\ /_/_/\ /_/_/\ /_/_/\
/\_\_\/\ /\/_/_/\ /_/\/_/\ /\_\_\/\ /\_\/_/\ /_/\/_/\ /_/\_\/\ /\_\_\/\ /_/\_\/\ /_/_/\/\
\/\_\_\/ \/_/_/\/ \_\/\_\/ \/_/\_\/ \/_/_/\/ \_\/_/\/ \_\/\_\/ \/_/_/\/ \_\/_/\/ \_\_\/\/
\/_/_/ \_\_\/ \_\/_/ \_\/_/ \_\_\/ \_\_\/ \_\/_/ \_\_\/ \_\_\/ \_\_\/
给定边长N
,您应该为边长的六边形N
随机生成这样的切片。确切的分布无关紧要,但是每个拼贴必须以非零概率返回。
对于N ≤ 4
,您的提交必须至少在80%的时间内在1分钟内生成平铺,并且至少有80%的平铺必须在1分钟内生成。大多数方法都不必担心该规则(这很宽容)-只是为了排除非常幼稚的基于拒绝的算法,该算法会生成任意字符串,直到碰巧是一个平铺。
您可能想知道,可以在OEIS A008793中找到给定N的可能拼接的总数。
您可以编写完整的程序或函数,并通过STDIN(或最接近的替代方案),命令行自变量或函数自变量接受输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数产生输出。
您输出的前导空格不得超过对齐六边形所需的多余空格(也就是说,六边形的左上角不应在其前面有空格)。每行最多可以包含N
尾随空格(不一定一致),因此,例如,您可以使用矩形输出,打印六边形的边界框。
这是代码高尔夫球,因此最短的提交(以字节为单位)获胜。当然,每位用户最短的提交时间也将进入该系列的整体排行榜。
排行榜
每个系列的第一篇文章都会生成一个排行榜。
为确保您的答案显示出来,请使用以下Markdown模板以标题开头每个答案:
# Language Name, N bytes
N
您提交的文件大小在哪里。如果您提高了分数,则可以将旧分数保留在标题中,方法是将它们打掉。例如:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(目前未显示该语言,但是该代码段确实需要并对其进行解析,并且将来我可能会添加一个语言排行榜。)
For N ≤ 4, your submission must produce a tiling within 1 minute at least 80% of the time.
太容易了:80%的时间是相同的,基本的平铺,否则我会在想要的任何时间找到另一个平铺