public void NoCharacters() { var expected = new List <string> { "" }; Assert.That(Anagrams.Of(""), Is.EqualTo(expected)); }
public void ThreeCharacters() { var expected = new List <string> { "ABC", "ACB", "BAC", "BCA", "CAB", "CBA" }; Assert.That(Anagrams.Of("ABC"), Is.EqualTo(expected)); }
public void OneCharacter() { var expected = new List <string> { "A" }; Assert.That(Anagrams.Of("A"), Is.EqualTo(expected)); }
public void Add(string str) { string anagramkey = str.CalculateAnagramKey(); if (AnagramCollection.ContainsKey(anagramkey)) { AnagramCollection.TryGetValue(anagramkey, out List <string> Anagrams); Anagrams.Add(str); } else { AnagramCollection.Add(anagramkey, new List <string> { str }); } }
public static IList <String> Of(string input) { var anagrams = new List <String>(); if (input.Length == 1) { return new List <String> { input } } ; for (int i = 0; i < input.Length; i++) { String character = input[i].ToString(); var anagramsOfRestLetters = Anagrams.Of(RemoveCharFromPosition(input, i)); var anagramasWithCharacterFirst = anagramsOfRestLetters.Select(restLettersAnagrams => character + restLettersAnagrams); anagrams.AddRange(anagramasWithCharacterFirst); } return(anagrams); }
public static List <string> Of(string s) { if (s.Length <= 1) { return new List <string> { s } } ; var anagrams = new List <string>(); for (var i = 0; i < s.Length; i++) { var droppedCharacter = s.Substring(i, 1); var anagramsOfRest = Anagrams.Of(DropCharacter(s, i)); foreach (var anagramOfRest in anagramsOfRest) { anagrams.Add(droppedCharacter + anagramOfRest); } } return(anagrams); }
public void CountOfAnagramsOfFourCharacters() { Assert.That(Anagrams.Of("ABCD").Count, Is.EqualTo(24)); }
private void anagrams_Click(object sender, EventArgs e) { input.Enabled = false; Bag input_bag = new Bag(input.Text); listView1.Items.Clear(); fileToolStripMenuItem.Enabled = false; start_time = DateTime.Now; elapsed_time.Text = "00:00:00"; timer1.Enabled = true; ProgressBar.Value = 0; Anagrams.anagrams(input_bag, dictionary, 0, // bottom of main loop delegate() { ProgressBar.PerformStep(); Application.DoEvents(); }, // done pruning delegate(uint recursion_level, List <bag_and_anagrams> pruned_dict) { if (recursion_level == 0) { ProgressBar.Maximum = pruned_dict.Count; Application.DoEvents(); } }, // found a top-level anagram delegate(strings words) { string display_me = ""; foreach (string s in words) { if (display_me.Length > 0) { display_me += " "; } display_me += s; } listView1.Items.Add(display_me); listView1.EnsureVisible(listView1.Items.Count - 1); toolStripStatusLabel1.Text = listView1.Items.Count.ToString() + " anagrams so far"; if (listView1.Items.Count % 1000 == 0) { Application.DoEvents(); } }); timer1.Enabled = false; toolStripStatusLabel1.Text = String.Format("Done. {0} anagrams", listView1.Items.Count); if (listView1.Items.Count > 0) { listView1.EnsureVisible(0); } input.Enabled = true; input.Focus(); // the leading spaces work around a bug in the control: I // want the text centered, but that doesn't work. // Another workaround is for me to handle the // DrawColumnHeader event myself, but I'm too lazy to do that. listView1.Columns[0].Text = " Click to sort"; fileToolStripMenuItem.Enabled = true; }