WikiFunctions.Diff.compact_diff C# (CSharp) Method

compact_diff() private method

private compact_diff ( IList a, IList b ) : System.Collections.Generic.List
a IList
b IList
return System.Collections.Generic.List
        private IntList compact_diff(IList a, IList b)
        {
            IntList am, bm;
            LCSidx(a, b, out am, out bm);
            IntList cdiff = new IntList();
            int ai = 0, bi = 0;
            cdiff.Add(ai);
            cdiff.Add(bi);
            while (true)
            {
                while (am.Count > 0 && ai == am[0] && bi == bm[0])
                {
                    am.RemoveAt(0);
                    bm.RemoveAt(0);
                    ++ai;
                    ++bi;
                }

                cdiff.Add(ai);
                cdiff.Add(bi);
                if (am.Count == 0) break;
                ai = am[0];
                bi = bm[0];
                cdiff.Add(ai);
                cdiff.Add(bi);
            }

            if (ai < a.Count || bi < b.Count)
            {
                cdiff.Add(a.Count);
                cdiff.Add(b.Count);
            }

            return cdiff;
        }