注意:在本文中,术语“字符”和“颜色”本质上是同一件事
这个图片:
可以表示为
....'''333
.eeee'''3e
..dddd33ee
%%%dd####e
(将颜色映射为ASCII字符)
四种颜色定理指出:“在将平面分成相邻区域的任何情况下,生成一个称为图的图形,对地图区域进行着色所需的颜色不超过四种,因此,两个相邻区域的颜色都不相同。两个如果这些区域共享不是角的公共边界,则这些区域称为相邻区域,其中角是三个或更多区域共享的点。” -维基百科(链接)
这意味着应该可以使用四种颜色为地图着色,以使没有两个共享边的部分共享一种颜色。
仅使用四种颜色为地图着色的算法很复杂,因此在此挑战中,您的程序仅需要使用五种或更少的颜色为地图着色。
重新着色的先前地图可能看起来像这样:
可以表示为
....'''333
.eeee'''3e
..dddd33ee
333dd....e
或同等
@@@@$$$!!!
@^^^^$$$!^
@@<<<<!!^^
!!!<<@@@@^
挑战:
给定一个由ascii字符组成的“地图”(每个字符代表不同的颜色),请对该地图“重新着色”(使用不同的ascii字符代表地图),使其仅使用五种或更少的颜色。
例:
输入:
%%%%%%%%%%%%##########$$$$$$$$%%
*****%%%####!!!!!!!%%%%%%%%%#^^^
(((((((***>>>>??????????%%%%%%%%
&&&&&&&&$$$$$$$^^^^^^^))@@@%%%%%
^^^^^^%%%%%%%%%%%%##############
可能的输出:
11111111111122222222223333333311
44444111222255555551111111112444
22222224441111444444444411111111
55555555222222255555553355511111
22222211111111111122222222222222
说明:
- 输入映射将始终使用六个或更多字符
- 您可以在输出中使用任何五个不同的字符
- 您可以在输出中使用少于五个不同的字符
- 您可以采用任何合理的格式输入(包括数组数组或字符串数组)
- 这是代码高尔夫球,因此最短的答案为准。
示例中没有错误,只是示例可以以任何一种方式工作-它没有错,只是模棱两可。这将有助于指定规则中标有相同字符的不同区域是相同还是多个区域。
—
MildlyMilquetoast
有趣的是,我正在就四色定理的证明写一篇论文。我必须说,五色定理的证明要简单得多
—
-MildlyMilquetoast


121即使示例中另有说明,我们是否应将地图视为3个单独的区域来避免此问题,还是应将其视为2个,并假定不会给出需要超过5种颜色的地图?