/// <summary>
 /// Returns message constructed from least frequent character in each column in columns
 /// </summary>
 /// <returns></returns>
 public string PartTwo()
 {
     for (int i = 0; i < columns.Length; i++)
     {
         message += AlphaFreqDict.GetLeastFrequentCharacter(columns [i]);
     }
     return(message);
 }
        /// <summary>
        /// Uses checksum to determine whether roomName is real
        /// </summary>
        /// <param name="roomName">full name of a single room</param>
        /// <returns>returns true if room is real, false if not</returns>
        bool IsRealRoom(string roomName)
        {
            string checkSum = GetCheckSum(roomName);
            Dictionary <char, int> letterFrequencies = AlphaFreqDict.GetLetterFrequencyDictionary();

            for (int i = 0; i < roomName.Length; i++)
            {
                if (char.IsLetter(roomName [i]))
                {
                    letterFrequencies [roomName [i]]++;
                }
                if (char.IsNumber(roomName [i]))
                {
                    break;
                }
            }
            for (int i = 0; i < AlphaFreqDict.alphabet.Length; i++)
            {
                if (letterFrequencies [AlphaFreqDict.alphabet [i]] == 0)
                {
                    letterFrequencies.Remove(AlphaFreqDict.alphabet [i]);
                }
            }
            List <KeyValuePair <char, int> > sortable = letterFrequencies.ToList();

            sortable.Sort(
                delegate(KeyValuePair <char, int> pair1, KeyValuePair <char, int> pair2)
            {
                int count = pair1.Value.CompareTo(pair2.Value);
                if (count != 0)
                {
                    return(count);
                }
                else
                {
                    return(-pair1.Key.CompareTo(pair2.Key));
                }
            });
            sortable.Reverse();
            for (int i = 0; i < checkSum.Length; i++)
            {
                if (checkSum [i] != sortable [i].Key)
                {
                    return(false);
                }
            }
            return(true);
        }