RosettaCodeData/Task/Morse-code/PascalABC.NET/morse-code.pas

28 lines
1.3 KiB
ObjectPascal

const
Morse = dict(('A', '.-'), ('B', '-...'), ('C', '-.-.'), ('D', '-..'), ('E', string('.')),
('F', '..-.'), ('G', '--.'), ('H', '....'), ('I', '..'), ('J', '.---'),
('K', '-.-'), ('L', '.-..'), ('M', '--'), ('N', '-.'), ('O', '---'),
('P', '.--.'), ('Q', '--.-'), ('R', '.-.'), ('S', '...'), ('T', string('-')),
('U', '..-'), ('V', '...-'), ('W', '.--'), ('X', '-..-'), ('Y', '-.--'),
('Z', '--..'), ('0', '-----'), ('1', '.----'), ('2', '..---'), ('3', '...--'),
('4', '....-'), ('5', '.....'), ('6', '-....'), ('7', '--...'), ('8', '---..'),
('9', '----.'), ('.', '.-.-.-'), (',', '--..--'), ('?', '..--..'), ('\', '.----.'),
('!', '-.-.--'), ('/', '-..-.'), ('(', '-.--.'), (')', '-.--.-'), ('&', '.-...'),
(':', '---...'), (';', '-.-.-.'), ('=', '-...-'), ('+', '.-.-.'), ('-', '-....-'),
('_', '..--.-'), ('''', '.-..-.'), ('$', '...-..-'), ('@', '.--.-.'));
procedure SayMorse(s: string);
begin
foreach var c in s do
begin
foreach var c2 in Morse.get(c.ToUpper, '') do
if c2 = '.' then console.Beep(1000, 250)
else console.Beep(1000, 750);
sleep(1000);
end;
end;
begin
SayMorse('SOS');
end.