Data update
This commit is contained in:
parent
81fd053722
commit
52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions
46
Task/Morse-code/OCaml/morse-code.ml
Normal file
46
Task/Morse-code/OCaml/morse-code.ml
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
let 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', "----.";
|
||||
]
|
||||
|
||||
let oc = open_out "/dev/dsp"
|
||||
|
||||
let bip u =
|
||||
for i = 0 to pred u do
|
||||
let j = sin(0.6 *. (float i)) in
|
||||
let k = ((j +. 1.0) /. 2.0) *. 127.0 in
|
||||
output_byte oc (truncate k)
|
||||
done
|
||||
|
||||
let gap u =
|
||||
for i = 0 to pred u do
|
||||
output_byte oc 0
|
||||
done
|
||||
|
||||
let morse =
|
||||
let u = 1000 in (* length of one unit *)
|
||||
let u2 = u * 2 in
|
||||
let u3 = u * 3 in
|
||||
let u6 = u * 6 in
|
||||
String.iter (function
|
||||
| ' ' -> gap u6
|
||||
| 'a'..'z' | 'A'..'Z' | '0'..'9' as c ->
|
||||
let s = List.assoc c codes in
|
||||
String.iter (function
|
||||
'.' -> bip u; gap u
|
||||
| '-' -> bip u3; gap u
|
||||
| _ -> assert false
|
||||
) s; gap u2
|
||||
| _ -> prerr_endline "unknown char")
|
||||
|
||||
let () = morse "rosettacode morse"
|
||||
Loading…
Add table
Add a link
Reference in a new issue