在Soulgit Games开发的All Light 启发下,这项挑战已完全消除。
挑战
您是一名电工,将所有灯连接到电池是您的工作。
- 灯和电池布置在网格中。
- 您可以将灯或电池连接到最近的灯或电池,将其连接到其北,南,东和西。
- 电池可以有任意数量的连接。
- 每个指示灯指定需要多少个连接。你必须准确到光,许多连接。
- 您可以在两个灯(或灯和电池)之间创建单连接或双连接。
- 电线不能交叉。
- 每个灯和电池之间必须有一条路径。
- 保证至少存在一个有效的解决方案。
给定电池和每个灯的位置以及每个灯所需的连接数,请输出它们之间允许这些属性的连接。
获胜条件
这是代码高尔夫球,因此每种语言中最短的代码将获胜。
测试用例
I / O像往常一样灵活。
对于输入,我将使用网格大小的二维数组,该数组存储灯光的正整数,空白的零和电池的-1。另一个好的选择可能是灯列表,其中灯是一个包含灯的位置和所需连接数的元组。
对于输出,我将使用连接列表,其中连接是包含开始位置和结束位置的元组。如果连接加倍,则列表中将有2个(另一个选项是在元组中包含此参数)。另一个不错的选择可能是某种网格布局。
如果使用坐标系,则可以指定起始索引以及从中开始索引。我的示例将使用0索引,并使用(0,0)作为左上角(行,列)。(我使用{}只是为了引入另一种定界符,因此更容易阅读,而不是因为它们是集合。)
这是测试用例的图形视图:测试1-12
测试1:
[-1 | 0 | 1 ] => [{(0, 0), (0, 2)}]
测试2:
[-1 | 0 | 2 ] => [{(0, 0), (0, 2)}, {(0, 0), (0, 2)}]
测试3:
[-1 ]
[ 0 ] => [{(0, 0), (2, 0)), ((0, 0), (2, 0)}]
[ 2 ]
测试4:
[ 1 | 0 |-1 | 0 | 2 ] => [{(0, 0), (0, 2)}, {(0, 2), (0, 4)}, {(0, 2), (0, 4)}]
测试5:
[ 2 ]
[ 0 ]
[-1 ] => [{(0, 0), (2, 0)}, {(0, 0), (2, 0)}, {(2, 0), (4, 0)}]
[ 0 ]
[ 1 ]
测试6:
[ 1 | 0 | 0 ]
[ 0 | 0 | 0 ] => [{(0, 0), (2, 0)}, {(2, 0), (2, 2)}]
[ 2 | 0 |-1 ]
测试7:
[ 4 | 0 | 0 |-1 ]
[ 0 | 0 | 0 | 0 ] => [{(0, 0), (0, 3)}, {(0, 0), (0, 3)},
[ 2 | 0 | 0 | 0 ] {(0, 0), (3, 0)}, {(0, 0), (3, 0)}]
测试8:
[ 2 | 0 |-1 | 0 | 2 ] [{(0, 0), (0, 2)}, {(0, 0), (0, 2)},
[ 0 | 0 | 0 | 0 | 0 ] => {(0, 2), (0, 4)}, {(0, 2), (0, 4)},
[ 0 | 0 | 1 | 0 | 0 ] {(0, 2), (2, 2)}]
测试9:
[ 0 | 0 | 2 | 0 | 0 ]
[ 0 | 0 | 0 | 0 | 0 ]
[ 1 | 0 |-1 | 0 | 1 ] => [{(0, 2), (2, 2)}, {(0, 2), (2, 2)}, {(2, 0), (2, 2)},
[ 0 | 0 | 0 | 0 | 0 ] {(4, 2), (2, 2)}, {(2, 4), (2, 2)}, {(2, 4), (2, 2)}]
[ 0 | 0 | 2 | 0 | 0 ]
测试10:
[-1 | 2 | 3 | 2 ] => [{(0, 0), (0, 3)}, {(0, 0), (0, 3)},
{(0, 0), (0, 3)}, {(0, 0), (0, 3)}]
测试11:
[-1 | 0 | 0 | 0 ]
[ 3 | 0 | 0 | 0 ]
[ 3 | 0 | 0 | 3 ] => [{(0, 0), (1, 0)}, {(1, 0), (2, 0)}, {(1, 0), (2, 0)},
[ 0 | 0 | 0 | 0 ] {(2, 0), (2, 3)}, {(2, 3), (4, 3)}, {(2, 3), (4, 3)}]
[ 0 | 0 | 0 | 2 ]
测试12:
[ 2 | 0 | 0 ] [{(0, 0), (1, 0)}, {(0, 0), (1, 0)}, {(1, 0), (1, 1)},
[ 3 |-1 | 0 ] => {(1, 1), (2, 1)}, {(1, 1), (2, 1)}, {(2, 0), (2, 1)},
[ 2 | 5 | 1 ] {(2, 0), (2, 1)}, {(2, 1), (2, 2)}]
[1 | -1] [1 1]。