Morse Code Decoder

Morse Code Decoder

open System

let morseTable() : Map<string, string> = 
    [|
        ("A",".-");
        ("B","-...");
        ("C","-.-.");
        ("D","-.."); 
        ("E","."); 
        ("F","..-.");
        ("G","--."); 
        ("H","....");
        ("I","..");  
        ("J",".---"); 
        ("K","-.-"); 
        ("L",".-..");
        ("M","--"); 
        ("N","-."); 
        ("O","---"); 
        ("P",".--.");
        ("Q","--.-"); 
        ("R",".-.");  
        ("S","..."); 
        ("T","-"); 
        ("U","..-"); 
        ("V","...-"); 
        ("W",".--");  
        ("X","-..-");
        ("Y","-.--"); 
        ("Z","--..");
        ("1",".----");
        ("2","..---");
        ("3","...--");
        ("4","....-");
        ("5",".....");
        ("6","-....");
        ("7","--...");
        ("8","---..");
        ("9","----.");
        ("0","-----");
        ("?","..--..");
        ("/","-..-.");
        ("-","-....-");
        (".",".-.-.-");
    |]
    |> Map.ofArray 
    |> (fun map ->  Map.fold (fun (mores : Map<string, string>) key value -> mores.Add(value, key)) Map.empty map)

let MorseCodeDecode (input : string) =
    [for i in input.Trim().Replace('/',' ').Split(' ') do yield morseTable().[i]]
    |> List.fold (+) ""
    |> Console.WriteLine

[<EntryPoint>]
let main argv=
    if argv.Length <> 0 then
        argv.[0]
        |> MorseCodeDecode
    else
        "Morse Code Decoder"
        |> Console.WriteLine
        while true do
            Console.ReadLine()
            |> MorseCodeDecode
    0

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注