2016-05-12 22:26:52 -04:00
|
|
|
module Triangle exposing (..)
|
2016-03-13 20:09:05 -04:00
|
|
|
|
|
|
|
import Set
|
|
|
|
|
|
|
|
|
2016-08-16 01:16:34 +01:00
|
|
|
type Triangle
|
|
|
|
= Equilateral
|
|
|
|
| Isosceles
|
|
|
|
| Scalene
|
|
|
|
|
|
|
|
|
|
|
|
version : Int
|
|
|
|
version =
|
|
|
|
2
|
|
|
|
|
|
|
|
|
2016-12-17 17:15:34 -05:00
|
|
|
triangleKind : comparable -> comparable -> comparable -> Result String Triangle
|
2016-03-13 20:09:05 -04:00
|
|
|
triangleKind x y z =
|
2016-06-19 17:46:13 -04:00
|
|
|
if x <= 0 || y <= 0 || z <= 0 then
|
|
|
|
Err "Invalid lengths"
|
|
|
|
else if x + y <= z || x + z <= y || y + z <= x then
|
|
|
|
Err "Violates inequality"
|
|
|
|
else
|
|
|
|
case Set.size (Set.fromList [ x, y, z ]) of
|
|
|
|
1 ->
|
2016-08-16 01:16:34 +01:00
|
|
|
Ok Equilateral
|
2016-03-13 20:09:05 -04:00
|
|
|
|
2016-06-19 17:46:13 -04:00
|
|
|
2 ->
|
2016-08-16 01:16:34 +01:00
|
|
|
Ok Isosceles
|
2016-03-13 20:09:05 -04:00
|
|
|
|
2016-06-19 17:46:13 -04:00
|
|
|
_ ->
|
2016-08-16 01:16:34 +01:00
|
|
|
Ok Scalene
|