Beispiel #1
0
        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));
        }
Beispiel #2
0
        /// <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);
        }