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