六边形棋盘格或平面拼贴是三色的-意味着仅使用三种颜色(例如红色,蓝色和绿色),就可以对每个六边形进行着色,而没有任何两个共享颜色边界的六边形。显示这种模式的部分示例。
给定局部ASCII六边形拼贴(通过STDIN,从文件中读取等),请更改字符的颜色(通过ANSI代码,图像处理等)以适合此颜色。扭曲是六边形的中间(*
下面的,是三种颜色),并且它们之间的线需要混合使用两种相应的十六进制*
颜色。如果线在外边界上,则应与对应*
。
例如,给定的部分六角形平铺
/ \ / \ / \ / \
| * | * | * | * |
\ / \ / \ / \ /
| * | * | * |
\ / \ / \ /
假设我们决定将左上角的十六进制着色*
为红色,并将其两个相邻的着色为蓝色和绿色(顺时针旋转)。然后,该|
行需要为洋红色,该/
行需要为黄色。如果我们继续着色,我们最终将得到如下所示(为清晰起见,将其放大):
或者,输入
/ \
| * |
/ \ /
| * |
/ \ /
| * |
\ /
您可能会这样着色(为清楚起见放大了):
其他一些测试用例(您的代码应能够处理这些用例):
/ \ / \
| * | * |
\ / \ /
| * |
/ \ / \
| * | * |
\ / \ /
/ \
| * |
\ / \
| * |
/ \ /
| * |
\ /
/ \
| * |
\ /
规则
- 确保输入具有至少一个六边形,并且任何输入都不会有“孔”。
- 只要您保持三色规则,就不需要用红色开始着色。
- 如果部分切片可以是两种颜色,则可以不加任何惩罚地进行着色(例如在第二个示例中)-您不必将部分切片推断为完整的切片。
- 六边形中心
*
必须用红色,蓝色或绿色着色,而它们之间的线必须是青色,黄色或品红色。例如,*
不允许具有洋红色,并且红色|
或\
或/
必须位于图形的外部边界上。请参阅下面的颜色。 - 如果您的控制台没有这些确切的颜色,请使用最接近的近似值,并在答案中指定您使用的近似值。
- 只要字符对齐,开头或结尾的空格(包括结尾的换行符)都是可以接受的。
- 可以通过空格填充输入部分切片,以形成一个矩形,如果这样可以简化代码。
- 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。
- 输出可以保存到控制台,也可以保存为图像等。
- 禁止出现标准漏洞。
- 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。
颜色和混色:
三种可用的基色是(带有RGB十进制格式的颜色代码):
- 红色
(255,0,0)
- 绿色
(0,255,0)
- 蓝色
(0,0,255)
组合为:
- 红色和绿色结合成黄色
(255,255,0)
- 蓝色和绿色相结合,使青色
(0,255,255)
- 红色和蓝色结合形成洋红色
(255,0,255)
*