public static FList <T> incorporateHolesIntoPolygon <T>(Project <T> project, FList <FList <T> > loops) { if (loops.Count <= 1) { return(loops[0]); } var holes = new FList <FList <T> >(loops); holes.RemoveAt(0); return(incorporateHolesIntoPolygon(project, loops[0], holes)); }
/// <summary> /// 指定されたバイナリヒープリストから優先順位が最大の値を取り出す /// </summary> /// <param name="list">削除元リスト、バイナリヒープになっている必要がある</param> /// <param name="comparer">比較インターフェース</param> /// <returns>取り出された値</returns> public static T PopHeap(FList <T> list, IComparer <T> comparer) // pop *_First to *(_Last - 1) and reheap, using _Pred { var top = list[0]; var last = list.Count - 1; if (1 <= last) { PopHeapHoleByIndex(list, 0, last, list[last], comparer); } list.RemoveAt(last); return(top); }