Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open System.Text.RegularExpressions
- let getOp = function
- | '+' -> (+)
- | '-' -> (-)
- | '/' -> (/)
- | 'X'
- | 'x'
- | '*' -> (*)
- | _ as op -> failwith (sprintf "Invalid operation: %c" op)
- let fragmentPattern = @"(\d+)\s+(\d+)\s+([+-/*xX])"
- let (|Regex|_|) pattern equasion =
- let matches = Regex.Match(equasion, pattern)
- if matches.Success then Some(List.tail [ for g in matches.Groups -> g.Value ])
- else None
- [<EntryPoint>]
- let main argv =
- let equasion = argv |> Array.toSeq |> String.concat " "
- let rec solve equasion =
- match equasion with
- | Regex fragmentPattern [num1; num2; op] ->
- let result = (getOp (char op)) (int num1) (int num2)
- let newEquasion = Regex.Replace(equasion, fragmentPattern, sprintf "%i" result)
- solve newEquasion
- | Regex @"^(\d+)$" [number] ->
- printfn "%s" number
- | _ -> printfn "Error"
- solve equasion
- 0 // return an integer exit code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement