예제 #1
0
        public static IEnumerable <EMSSMove> Generate(LinearLinkage lle)
        {
            var groupItems = new List <int>();
            var lleb       = lle.ToBackLinks();

            for (var i = 0; i < lle.Length; i++)
            {
                foreach (var move in GenerateForItem(i, groupItems, lle, lleb))
                {
                    yield return(move);
                }
                if (lleb[i] != i)
                {
                    groupItems.Remove(lleb[i]);
                }
                groupItems.Add(i);
            }
        }