問題:接続されたポリゴンの穴の数を数えます。ポリゴンの接続性は、入力三角形分割のすべての三角形が少なくとも1つの辺を別の三角形と共有し、そのような接続された三角形のセットが1つしかないという条件によって保証されます。
入力は、平面内L
のn
点のリストと、T
からのエントリを含む3タプルのリストです0...n-1
。T
タプル内の各アイテムは、三角形分割の三角形(t_1,t_2,t_3)
の3つの頂点(リストからL
)を表します。これは、「ポリゴンの三角形分割」の意味での三角形分割であることに注意してください。このため、T
そのオーバーラップに2つの三角形が存在することはありません。追加の規定は、あなたが入力をサニタイズする必要はないだろう、ということであるL
とT
任意の繰り返しが含まれていません。
例1:もしL = {{0,0},{1,0},{0,1},{1,2}}
とT = {{0,1,2},{1,2,3}}
、指定した多角形は0の穴数を持っています。
実施例2:場合L = {{0,0},{1,0},{2,0},{2,1},{2,2},{1,2},{0,2},{0,1},{.5,.5},{1.5,.5},{1.5,1.5},{.5,1.5}}
とT = {{5,6,11},{5,10,11},{4,5,10},{3,8,10},{2,3,9},{2,8,9},{1,2,8},{0,1,8},{0,8,11},{0,7,11},{6,7,11},{3,4,10}}
その後ポリゴン入力が2の出力をもたらすはずです。
タスクがかかる最短プログラム(または関数)を書くことであるL
とT
穴の数を入力し、リターンなどを。「勝者」は、文字数が最も少ないエントリ(仮の終了日は6月1日)として認識されます。
サンプル入力フォーマット(0のインデックス付けに注意):
0,0
1,0
0,1
1,2
0,1,2
1,2,3
T=1,2,3/1,4,5
接続されているが、エッジ接続されていない)
T=1,2,3/1,2,4/5,6,7/5,6,8
。すべての三角形は別の三角形とエッジを共有しますが、三角形分割は切断されます