Sha256: 3b363cc10ec03cb52321f4c5c1c2a456f2baadf759709592534ff7a62a3ae974

Contents?: true

Size: 826 Bytes

Versions: 354

Compression:

Stored size: 826 Bytes

Contents

module Triangle
  ( Triangle(Equilateral, Isosceles, Scalene)
  , triangleKind
  ) where

import Prelude
import Data.Set as Set
import Data.Either (Either(Left, Right))
import Data.Generic (class Generic, gShow)


data Triangle
  = Equilateral
  | Isosceles
  | Scalene

derive instance eqTriangle :: Eq Triangle

derive instance genericTriangle :: Generic Triangle

instance showTriangle :: Show Triangle where
  show = gShow


type ErrorMsg = String


triangleKind :: Int -> Int -> Int -> Either ErrorMsg Triangle
triangleKind x y z
  | x <= 0 || y <= 0 || z <= 0
    = Left "Invalid lengths"

  | x + y <= z || x + z <= y || y + z <= x
    = Left "Violates inequality"

  | otherwise
    = case Set.size $ Set.fromFoldable [x, y, z] of
        1 -> Right Equilateral
        2 -> Right Isosceles
        _ -> Right Scalene

Version data entries

354 entries across 354 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.179 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.178 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.177 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.176 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.175 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.174 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.173 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.172 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.171 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.170 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.169 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.167 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.166 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.165 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.164 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.163 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.162 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.161 tracks/purescript/exercises/triangle/examples/src/Triangle.purs
trackler-2.2.1.160 tracks/purescript/exercises/triangle/examples/src/Triangle.purs