Exemple #1
0
        private static Occurrences Subtract(Occurrences x, Occurrences y)
        {
            var xm = x.ToDictionary(tuple => tuple.Item1, tuple => tuple.Item2);
            var ym = y.ToDictionary(tuple => tuple.Item1, tuple => tuple.Item2);
            var zm = new Dictionary <char, int>();

            foreach (var kvp in xm)
            {
                var c  = kvp.Key;
                var nx = kvp.Value;
                int ny;
                zm[c] = (ym.TryGetValue(c, out ny)) ? nx - ny : nx;
            }

            return(zm
                   .Where(kvp => kvp.Value > 0)
                   .Select(kvp => Tuple.Create(kvp.Key, kvp.Value))
                   .OrderBy(tuple => tuple.Item1));
        }