使用F#计算三角形

Kai*_*Kai 1 geometry f#

我正在尝试编写一个程序来计算三角形.对于这个计算,有人能给我一个F#sharp的简短代码吗?

在此输入图像描述

这是我到目前为止所做的,但我不相信这是最好的方法:

let area a b c = 
  let s = sqrt((a + b + c) / 2) 
  sqrt(s * (s - a) * (s - b) * (s - c))
Run Code Online (Sandbox Code Playgroud)

Pao*_*lla 5

您似乎正在尝试根据您拥有的三角形类型应用不同的公式.如果你有三个边使用苍鹭的公式,如果你有一边你假设三角形是等边的,如果你有两边你假设三角形是正确的,而两边是导管.如果我正确解释,我会定义一个有区别的联合,如下所示:

type Triangle =
| Generic of float * float * float
| Equilateral of float
| Right of float * float

let area (t : Triangle) : float = 
  match t with 
  | Generic (a, b, c) -> let s = (a + b + c) / 2. 
                         sqrt(s*(s-a)*(s-b)*(s-c))
  | Equilateral a     -> sqrt(3.) * (a ** 2.) / 4.
  | Right (a, b)      -> (a * b) / 2.

// testing
let triangles = [Generic (2., 3., 4.); Equilateral 2.; Right (2., 3.)] 

triangles |>
List.iter (fun t -> Console.WriteLine(area t))
Run Code Online (Sandbox Code Playgroud)