Example #1
0
        public void AddWord(Word word)
        {
            if (words.Contains(word))
            {
                return;
            }
            words.Add(word);

            // Check if word can be linked to others
            foreach (Word other in words)
            {
                if (LinkTypes.IsOneLetterChange(word.Text, other.Text))
                {
                    Link link = new Link(word, other, LinkType.OneLetterChange);
                    AddLink(link);
                }
                if (LinkTypes.IsOneLetterAddOrRemove(word.Text, other.Text))
                {
                    Link link = new Link(word, other, LinkType.OneLetterAddOrRemove);
                    AddLink(link);
                }
                if (LinkTypes.IsAnagram(word.Text, other.Text))
                {
                    Link link = new Link(word, other, LinkType.Anagram);
                    AddLink(link);
                }
            }
        }
Example #2
0
 public void IsOneLetterChange()
 {
     Assert.IsTrue(LinkTypes.IsOneLetterChange("moon", "moan"));
     Assert.IsTrue(LinkTypes.IsOneLetterChange("cart", "care"));
     Assert.IsFalse(LinkTypes.IsOneLetterChange("cat", "bit"));
     Assert.IsFalse(LinkTypes.IsOneLetterChange("cat", "angle"));
     Assert.IsFalse(LinkTypes.IsOneLetterChange("cat", "cat"));
 }
Example #3
0
        public Link(Word wordA, Word wordB, LinkType type)
        {
            this.WordA = wordA;
            this.WordB = wordB;
            this.Type  = type;

            if (type == LinkType.Anagram && !LinkTypes.IsAnagram(WordA.Text, WordB.Text))
            {
                throw new Exception(WordA.Text + " is not an anagram of " + WordB.Text);
            }
            if (type == LinkType.OneLetterChange && !LinkTypes.IsOneLetterChange(WordA.Text, WordB.Text))
            {
                throw new Exception(WordA.Text + " is not a letter change from " + WordB.Text);
            }
            if (type == LinkType.OneLetterAddOrRemove && !LinkTypes.IsOneLetterAddOrRemove(WordA.Text, WordB.Text))
            {
                throw new Exception(WordA.Text + " is not a letter additon or subtraction to " + WordB.Text);
            }
        }