A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
65
Task/Morse-code/Ruby/morse-code.rb
Normal file
65
Task/Morse-code/Ruby/morse-code.rb
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
require 'win32/sound'
|
||||
|
||||
class MorseCode
|
||||
MORSE = {
|
||||
"!" => "---.", "\"" => ".-..-.", "$" => "...-..-", "'" => ".----.",
|
||||
"(" => "-.--.", ")" => "-.--.-", "+" => ".-.-.", "," => "--..--",
|
||||
"-" => "-....-", "." => ".-.-.-", "/" => "-..-.", "0" => "-----",
|
||||
"1" => ".----", "2" => "..---", "3" => "...--", "4" => "....-", "5" => ".....",
|
||||
"6" => "-....", "7" => "--...", "8" => "---..", "9" => "----.", ":" => "---...",
|
||||
";" => "-.-.-.", "=" => "-...-", "?" => "..--..", "@" => ".--.-.", "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" => "--..",
|
||||
"[" => "-.--.", "]" => "-.--.-", "_" => "..--.-",
|
||||
}
|
||||
|
||||
T_UNIT = 75 # ms
|
||||
FREQ = 700
|
||||
DIT = 1 * T_UNIT
|
||||
DAH = 3 * T_UNIT
|
||||
CHARGAP = 1 * T_UNIT
|
||||
WORDGAP = 7 * T_UNIT
|
||||
|
||||
def initialize(string)
|
||||
@message = string
|
||||
puts "your message is #{string.inspect}"
|
||||
end
|
||||
|
||||
def send
|
||||
@message.strip.upcase.split.each do |word|
|
||||
word.each_char do |char|
|
||||
send_char char
|
||||
pause CHARGAP
|
||||
print " "
|
||||
end
|
||||
pause WORDGAP
|
||||
puts ""
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def send_char(char)
|
||||
MORSE[char].each_char do |code|
|
||||
case code
|
||||
when '.' then beep DIT
|
||||
when '-' then beep DAH
|
||||
end
|
||||
pause CHARGAP
|
||||
print code
|
||||
end
|
||||
end
|
||||
|
||||
def beep(ms)
|
||||
::Win32::Sound.beep(FREQ, ms)
|
||||
end
|
||||
|
||||
def pause(ms)
|
||||
sleep(ms.to_f/1000.0)
|
||||
end
|
||||
end
|
||||
|
||||
MorseCode.new('sos').send
|
||||
MorseCode.new('this is a test.').send
|
||||
Loading…
Add table
Add a link
Reference in a new issue