Skip to content

Instantly share code, notes, and snippets.

@mcoms
Last active August 29, 2015 14:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mcoms/2d5cea626ec50a6e48e0 to your computer and use it in GitHub Desktop.
Save mcoms/2d5cea626ec50a6e48e0 to your computer and use it in GitHub Desktop.
Morse code bitstream
def bitstream_to_text(bitstream)
bitstream.join.gsub('111', '-').gsub('1', '.').gsub('0',' ')
end
MORSE_ALPHABET = Hash.new([]).merge!({
" "=>[0],
"A"=>[1, 0, 1, 1, 1],
"B"=>[1, 1, 1, 0, 1, 0, 1, 0, 1],
"C"=>[1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1],
"D"=>[1, 1, 1, 0, 1, 0, 1],
"E"=>[1],
"F"=>[1, 0, 1, 0, 1, 1, 1, 0, 1],
"G"=>[1, 1, 1, 0, 1, 1, 1, 0, 1],
"H"=>[1, 0, 1, 0, 1, 0, 1],
"I"=>[1, 0, 1],
"J"=>[1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1],
"K"=>[1, 1, 1, 0, 1, 0, 1, 1, 1],
"L"=>[1, 0, 1, 1, 1, 0, 1, 0, 1],
"M"=>[1, 1, 1, 0, 1, 1, 1],
"N"=>[1, 1, 1, 0, 1],
"O"=>[1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1],
"P"=>[1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1],
"Q"=>[1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1],
"R"=>[1, 0, 1, 1, 1, 0, 1],
"S"=>[1, 0, 1, 0, 1],
"T"=>[1, 1, 1],
"U"=>[1, 0, 1, 0, 1, 1, 1],
"V"=>[1, 0, 1, 0, 1, 0, 1, 1, 1],
"W"=>[1, 0, 1, 1, 1, 0, 1, 1, 1],
"X"=>[1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1],
"Y"=>[1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1],
"Z"=>[1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1],
"1"=>[1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1],
"2"=>[1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1],
"3"=>[1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1],
"4"=>[1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1],
"5"=>[1, 0, 1, 0, 1, 0, 1, 0, 1],
"6"=>[1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1],
"7"=>[1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1],
"8"=>[1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1],
"9"=>[1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1],
"0"=>[1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1],
"/"=>[1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1]
})
def calculate_bitstream(message)
bits = []
message.upcase.each_char do |letter|
bits += MORSE_ALPHABET[letter]
bits += [0, 0, 0]
end
bits.pop 3
bits
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment