morse←{                     ⍝ Conversion to/from Morse code.

    P M←{⍵~¨' '}\↓⍉↑{       ⍝ plain-text and Morse codes.
        ('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' ' --.. '),⍵}{

        ('0' ' ----- ')('1' ' .---- ')('2' ' ..--- ')('3' ' ...-- '),⍵}{
        ('4' ' ....- ')('5' ' ..... ')('6' ' -.... ')('7' ' --... '),⍵}{
        ('8' ' ---.. ')('9' ' ----. '),⍵}{

        ('.' ' .-.-.- ')(',' ' --..-- ')(':' ' ---... '),⍵}{
        ('?' ' ..--.. ')('''' ' .----. ')('-' ' -....- '),⍵}{
        ('/' ' -..-.  ')('(' ' -.--.- ')(')' ' -.--.- '),⍵}{
        ('"' ' .-..-. ')('@' ' .--.-. ')('=' ' -...-  '),⍵}{

        ⍵}⊂' ' ' / '        ⍝ blank / inter-word separator.

    1=|≡,⍵:M[P⍳⍵∩P]         ⍝ plain text to Morse.
    2=|≡,⍵:P[M⍳⍵∩M]         ⍝ Morse to plain text.
}
code_colours

test script

Back to: notes

Back to: Workspaces