using System; using System.Linq; using System.Text.RegularExpressions; namespace DailyChallenge283 { class Program { static void Main() { Console.WriteLine(Check("Clint Eastwood ? Old West Action")); Console.WriteLine(Check("parliament ? partial man")); Console.WriteLine(Check("wisdom ? mid sow")); Console.WriteLine(Check("Seth Rogan ? Gathers No")); Console.WriteLine(Check("Reddit ? Eat Dirt")); Console.WriteLine(Check("Schoolmaster ? The classroom")); Console.WriteLine(Check("Astronomers ? Moon starer")); Console.WriteLine(Check("Vacation Times ? I'm Not as Active")); Console.WriteLine(Check("Dormitory ? Dirty Rooms")); Console.ReadLine(); } static string Check(string input) { // Split the input string char[] delimiter = { '?' }; var words = input.Split(delimiter); // Preserve both parts of input string in two variables var f = words[0].Substring(0, words[0].Length - 1); var s = words[1].Substring(1); // Remove non-alphabetical characters var reg = new Regex("[^a-zA-Z?]"); var first = reg.Replace(words[0].ToLower(), ""); var second = reg.Replace(words[1].ToLower(), ""); var temp = ""; // Start checking letters for (int i = 0; i < second.Length; i++) { if (first.Contains(second[i])) { temp += second[i]; first = Trim(first, second[i]); } } // If all letters are used AND there are no letters remaining, it's an anagram if (temp == second && first == "") { return string.Format("'{0}' is an anagram of '{1}'", f, s); } // Not an anagram return string.Format("'{0}' is NOT an anagram of '{1}'", f, s); } static string Trim(string letters, char letter) { string temp = ""; for (int i = 0; i < letters.Length; i++) { if (letters.IndexOf(letter) != -1) { temp = letters.Remove(letters.IndexOf(letter), 1); break; } } if (temp != letters) { return temp; } return letters; } } }