コード例 #1
0
        public CharacterCountMap Subtract(string word)
        {
            var that = new CharacterCountMap(this);

            foreach (var c in word)
            {
                if (!that.ContainsKey(c) || that[c] == 0)
                {
                    return(null);
                }
                that[c]--;
            }
            return(that);
        }
コード例 #2
0
 public bool AreEqual(CharacterCountMap that)
 {
     if (this.Keys.Count != that.Keys.Count)
     {
         return(false);
     }
     foreach (var k in this.Keys)
     {
         if (!that.ContainsKey(k))
         {
             return(false);
         }
         if (this[k] != that[k])
         {
             return(false);
         }
     }
     return(true);
 }
コード例 #3
0
 public static IEnumerable <string> Find(IEnumerable <string> wordlist, CharacterCountMap map, int maxWordCount)
 {
     foreach (var word in wordlist)
     {
         var wordmap = map.Subtract(word);
         if (wordmap != null)
         {
             if (wordmap.IsEmpty())
             {
                 yield return(word);
             }
             else if (maxWordCount > 0)
             {
                 var nextWordlist = wordlist.Where(x => x != word);
                 foreach (var s in Find(nextWordlist, wordmap, maxWordCount - 1))
                 {
                     yield return(word + " " + s);
                 }
             }
         }
     }
 }
コード例 #4
0
 public CharacterCountMap(CharacterCountMap that) : base(that)
 {
 }