Advertisement
ptrelford

Phone number to words

Oct 4th, 2012
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.27 KB | None | 0 0
  1. let letters =
  2.     [
  3.     '0', ['0']
  4.     '1', ['1']
  5.     '2', ['A';'B';'C']
  6.     '3', ['D';'E';'F']
  7.     '4', ['G';'H';'I']
  8.     '5', ['J';'K';'L']
  9.     '6', ['M';'N';'O']
  10.     '7', ['P';'Q';'R';'S']
  11.     '8', ['T';'U';'V']
  12.     '9', ['W';'X';'Y';'Z']
  13.     ]
  14.     |> Map.ofList
  15.  
  16. let numberToWords (digits:string) =
  17.     let rec f acc = function
  18.         | [] -> [acc |> List.rev]
  19.         | x :: xs -> [for c in letters.[x] do yield! f (c::acc) xs]
  20.     f [] [for c in digits -> c]
  21.     |> List.map (fun chars -> System.String(chars |> List.toArray))
  22.  
  23. (*
  24. > digitsToWords "3663";;
  25. val it : System.String list =
  26.   ["DMMD"; "DMME"; "DMMF"; "DMND"; "DMNE"; "DMNF"; "DMOD"; "DMOE"; "DMOF";
  27.    "DNMD"; "DNME"; "DNMF"; "DNND"; "DNNE"; "DNNF"; "DNOD"; "DNOE"; "DNOF";
  28.    "DOMD"; "DOME"; "DOMF"; "DOND"; "DONE"; "DONF"; "DOOD"; "DOOE"; "DOOF";
  29.    "EMMD"; "EMME"; "EMMF"; "EMND"; "EMNE"; "EMNF"; "EMOD"; "EMOE"; "EMOF";
  30.    "ENMD"; "ENME"; "ENMF"; "ENND"; "ENNE"; "ENNF"; "ENOD"; "ENOE"; "ENOF";
  31.    "EOMD"; "EOME"; "EOMF"; "EOND"; "EONE"; "EONF"; "EOOD"; "EOOE"; "EOOF";
  32.    "FMMD"; "FMME"; "FMMF"; "FMND"; "FMNE"; "FMNF"; "FMOD"; "FMOE"; "FMOF";
  33.    "FNMD"; "FNME"; "FNMF"; "FNND"; "FNNE"; "FNNF"; "FNOD"; "FNOE"; "FNOF";
  34.    "FOMD"; "FOME"; "FOMF"; "FOND"; "FONE"; "FONF"; "FOOD"; "FOOE"; "FOOF"]
  35. *)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement