Sha256: 5369605a82de77a6d14afdfaed45c1a406e886363ea53113e260bb5d99f360bb

Contents?: true

Size: 673 Bytes

Versions: 274

Compression:

Stored size: 673 Bytes

Contents

package triangle

import "math"

type Kind string

const testVersion = 3

const (
	Equ Kind = "equilateral"
	Iso      = "isosceles"
	Sca      = "scalene"
	NaT      = "not a triangle"
)

func KindFromSides(a, b, c float64) Kind {
	if math.IsNaN(a) || math.IsNaN(b) || math.IsNaN(c) {
		return NaT
	}
	if a > b {
		a, b = b, a
	}
	if b > c {
		b, c = c, b
	}
	if a > b {
		a, b = b, a
	}
	// sides are now sorted
	switch {
	case math.IsInf(c, 1): // largest side is +Inf, guards against (3, +Inf, +Inf)
		return NaT
	case a <= 0:
		return NaT
	case a+b < c: // triangle inequality
		return NaT
	case a == c:
		return Equ
	case a == b || b == c:
		return Iso
	}
	return Sca
}

Version data entries

274 entries across 274 versions & 1 rubygems

Version Path
trackler-2.1.0.18 tracks/go/exercises/triangle/example.go
trackler-2.1.0.17 tracks/go/exercises/triangle/example.go
trackler-2.1.0.16 tracks/go/exercises/triangle/example.go
trackler-2.1.0.15 tracks/go/exercises/triangle/example.go
trackler-2.1.0.14 tracks/go/exercises/triangle/example.go
trackler-2.1.0.13 tracks/go/exercises/triangle/example.go
trackler-2.1.0.12 tracks/go/exercises/triangle/example.go
trackler-2.1.0.11 tracks/go/exercises/triangle/example.go
trackler-2.1.0.10 tracks/go/exercises/triangle/example.go
trackler-2.1.0.9 tracks/go/exercises/triangle/example.go
trackler-2.1.0.8 tracks/go/exercises/triangle/example.go
trackler-2.1.0.7 tracks/go/exercises/triangle/example.go
trackler-2.1.0.6 tracks/go/exercises/triangle/example.go
trackler-2.1.0.5 tracks/go/exercises/triangle/example.go
trackler-2.1.0.4 tracks/go/exercises/triangle/example.go
trackler-2.1.0.3 tracks/go/exercises/triangle/example.go
trackler-2.1.0.2 tracks/go/exercises/triangle/example.go
trackler-2.1.0.1 tracks/go/exercises/triangle/example.go
trackler-2.1.0.0 tracks/go/exercises/triangle/example.go
trackler-2.0.8.55 tracks/go/exercises/triangle/example.go