背景
粘液霉菌真棒。如果将它们放在有食物来源的表面上,它们将蔓延其卷须以寻找食物,然后它们在来源之间形成连接网络。在此挑战中,您将模拟一个黏液模具来寻找食物。而且,一旦找到足够的模具,该模具将停止。
输入值
您的输入应为使用L
语言的本机格式的2D整数坐标列表,以及非负整数N
。该列表L
保证不会重复,但是可能无法排序。输入N
介于0和的长度(L
含)之间。
该列表L
代表了一组食物来源坐标。例如清单
[(0,0),(2,-1),(3,1),(0,4),(5,5)]
可以在视觉上解释为
o
o
o
o
o
输出量
您的输出是另一个K
2D整数坐标的无重复列表,其格式与输入相同。它代表由粘液模具形成的网络,并且应满足以下条件:
- 的交点
L
和K
具有大小完全相同N
。 - 该集合
K
作为整数网格的子集连接(通过正交或对角线邻接)。 - 如果
K
移除了的任何坐标,则它不再满足前两个条件。
请注意,如果N = 0
,输出必须为空列表。
用于上述列表中的可接受的输出的一个例子L
和N = 4
将
[(0,0),(0,1),(0,2),(0,3),(0,4),(1,4),(2,4),(3,3),(3,2),(3,1),(3,5),(4,5),(5,5)]
可以可视化为
xxO
Oxx
x x
x x
x O
O
o
其中,每个O
代表一个在两个坐标L
和K
,并且每个x
代表一个坐标中K
而不是在L
。其他输出也是可以接受的,“卷轴”不必尽可能短。例如,这也是可接受的解决方案:
xxOxx
Oxx x
x x
x x
x o x
O x
Ox
规则
输入和输出都应该是列表,而不是集合或其他数据类型。坐标本身可以是列表或元组。如果需要,您可以更改两个输入的顺序。
您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。
测试用例
您的程序应在这些列表中使用的所有适用值N
。
[]
[(2,3)]
[(0,0),(1,0),(0,1),(1,1)]
[(0,0),(2,-1),(3,1),(0,4),(5,5)]
[(0,0),(1,0),(2,0),(3,0),(0,3),(1,3),(2,3),(3,3)]
[(0,0),(1,0),(2,0),(3,0),(0,3),(1,3),(2,3),(3,3),(0,1),(0,2),(3,1),(3,2),(8,1),(8,2),(-5,1),(-5,2)]
[(0,0),(20,0),(15,15),(-10,4),(-10,3),(0,-5),(7,6),(7,7),(8,8),(9,8),(10,-2),(-1,12),(-3,10)]
[(0,0),(1,0),(2,0),(3,0),(5,0),(6,0),(7,0),(0,9),(1,9),(2,9),(3,8),(4,9),(5,10),(6,10),(7,9),(3,3),(4,4),(5,5)]
可视化:
===
o
===
oo
oo
===
o
o
o
o
o
===
oooo
oooo
===
oooo
o o o o
o o o o
oooo
===
o
o
o
oo
o
o
o
o
o o
o
o
===
oo
ooo o o
o
o
o
o
oooo ooo