using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MorseCode
{
public class MorseCodeConverter
{
public Dictionary<string, string> morseCode;
public MorseCodeConverter()
{
LoadMorseCode();
}
private void LoadMorseCode()
{
morseCode = new Dictionary<string, string>();
morseCode.Add("a", ".-");
morseCode.Add("b", "-...");
morseCode.Add("c", "-.-.");
morseCode.Add("d", "-..");
morseCode.Add("e", ".");
morseCode.Add("f", "..-.");
morseCode.Add("g", "--.");
morseCode.Add("h", "....");
morseCode.Add("i", "..");
morseCode.Add("j", ".---");
morseCode.Add("k", "-.-");
morseCode.Add("l", ".-..");
morseCode.Add("m", "--");
morseCode.Add("n", ".-");
morseCode.Add("o", "---");
morseCode.Add("p", ".--.");
morseCode.Add("q", "--.-");
morseCode.Add("r", ".-.");
morseCode.Add("s", "...");
morseCode.Add("t", "-");
morseCode.Add("u", "..-");
morseCode.Add("v", "...-");
morseCode.Add("w", ".--");
morseCode.Add("x", "-..-");
morseCode.Add("y", "-.--");
morseCode.Add("z", "--..");
morseCode.Add("1", ".----");
morseCode.Add("2", "..---");
morseCode.Add("3", "...--");
morseCode.Add("4", "....-");
morseCode.Add("5", ".....");
morseCode.Add("6", "-....");
morseCode.Add("7", "--...");
morseCode.Add("8", "---..");
morseCode.Add("9", "----.");
morseCode.Add("0", "-----");
}
/// <summary>
/// Returns a translated word from English to Morse code.
/// </summary>
/// <param name="word">Word to be translated.</param>
/// <returns>A string of Morse code.</returns>
public string Translate(string word)
{
foreach (char letter in word)
{
StringBuilder morse = new StringBuilder();
morse.Append(morseCode[letter.ToString()]);
return morse.ToString();
}
return String.Empty;
}
}
}
Мне скучно в этот уик-энд и создание приложения кодов Морзе.Где я могу улучшить этот код?
Я использую StringBuilder, поэтому я не создаю новый строковый объект для каждой конкатенации символов, но, похоже, я не могу использовать его достаточно хорошо.
Любые явные улучшения, которые я могу сделать?
Почему бы не использовать словарь `? Btw, вы создаете мусор, вызывая `char.ToString()` для каждого символа в слове. –
Ani
2010-12-05 13:18:58
вы возвращаете только первую букву, желательно ли это поведение? – nan 2010-12-05 13:21:23
Одним из способов улучшить это было бы исправление представления `n` :) В настоящее время это то же самое, что и` a`, но на самом деле оно должно быть `_.`. – kichik 2010-12-05 13:23:44