バックグラウンド
粘菌は素晴らしいです。あなたがそれらを食料源のある表面に置くと、彼らは彼らの巻きひげを広げて食料を見つけ、その後、彼らはその源の間のつながりのネットワークを形成します。この課題では、食べ物を探す粘菌をシミュレートします。さらに、この特定のカビは、十分に検出されると停止します。
入力
入力は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
が削除されると、最初の2つの条件を満たさなくなります。
の場合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
。他の出力も受け入れ可能であり、 "tendrils"は可能な限り最短である必要はありません。たとえば、これも許容できるソリューションです。
xxOxx
Oxx x
x x
x x
x o x
O x
Ox
ルール
入力と出力の両方がリストであり、セットや他のデータ型ではありません。座標自体は、リストまたはタプルにすることができます。必要に応じて、2つの入力の順序を変更できます。
完全なプログラムまたは関数を記述できます。最も低いバイト数が優先され、標準の抜け穴は許可されません。
テストケース
プログラムは、のすべての適用可能な値について、これらのリストで機能するはずです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