From a563b2be9b4f56f413399be20e4b09496400fefd Mon Sep 17 00:00:00 2001 From: Nilstrieb Date: Tue, 1 Dec 2020 19:45:05 +0100 Subject: [PATCH] optimized --- .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/6.6.1/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes src/main/kotlin/main.kt | 66 +++++++----------- 4 files changed, 26 insertions(+), 40 deletions(-) diff --git a/.gradle/6.6.1/executionHistory/executionHistory.lock b/.gradle/6.6.1/executionHistory/executionHistory.lock index 7bc059eb5c76d10163175ba458dc929652bd3881..cee59fb584727b2d4aa4869e6a62d9ecb255e893 100644 GIT binary patch literal 17 UcmZR69({hYg68h?3=r@P06CBaVE_OC literal 17 UcmZR69({hYg68h?3=nVy06BgIPXGV_ diff --git a/.gradle/6.6.1/fileHashes/fileHashes.lock b/.gradle/6.6.1/fileHashes/fileHashes.lock index 5f5a75fa3f70c66da9d006c2ecf8f3e3a89d1ad1..64b86c91496a732fc1ac65ef2733d10bd522962b 100644 GIT binary patch literal 17 VcmZR6FQ@-N0RS_z1X2J1 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index ab3fa9e5d97228702465569875729778a3d25e65..50672413de5e4dbfa693f83a8676d9b843af9c56 100644 GIT binary patch literal 17 TcmZQ>71J`}p6uJt00EN#9wY+? literal 17 TcmZQ>71J`}p6uJt00Er<9vcGw diff --git a/src/main/kotlin/main.kt b/src/main/kotlin/main.kt index 99cbf1b..dfc7772 100644 --- a/src/main/kotlin/main.kt +++ b/src/main/kotlin/main.kt @@ -1,5 +1,5 @@ -import java.lang.IllegalArgumentException import kotlin.math.* +import kotlin.reflect.KFunction fun main() { val triangle = Triangle(4.0, 3.0, 5.0) @@ -29,52 +29,19 @@ class Triangle() { constructor(angleName: String, angleD: Double, sideName: String, side: Double) : this() { val angle = angleD.toRadians() //thanks kotlin + when (angleName) { "alpha" -> { - alpha = Angle(angleD, "alpha") - when (sideName) { - "a" -> { - a = Side(side, "a"); - c = Side(a / sin(angle), "c") - b = Side(c * cos(angle), "b") - } - "b" -> { - b = Side(side, "b") - c = Side(b / cos(angle), "c") - a = Side(c * sin(angle), "a") - } - "c" -> { - c = Side(side, "c") - a = Side(c * sin(angle), "a") - b = Side(c * cos(angle), "a") - } - } - beta = Angle(asin(b.length / c.length).toDegree(), "beta") + assignSides(::sin, ::cos, angle, sideName, side) } "beta" -> { - beta = Angle(angleD, "beta") - when (sideName) { - "a" -> { - a = Side(side, "a"); - c = Side(a / cos(angle), "c") - b = Side(c * sin(angle), "b") - } - "b" -> { - b = Side(side, "b") - c = Side(b / sin(angle), "c") - a = Side(c * cos(angle), "a") - } - "c" -> { - c = Side(side, "c") - a = Side(c * cos(angle), "a") - b = Side(c * sin(angle), "a") - } - } + assignSides(::cos, ::sin, angle, sideName, side) } else -> { - throw IllegalArgumentException("$angleName is not a valid angle") + throw IllegalArgumentException("Illegal angle $angle") } } + calculateAngles() } constructor(vararg sides: Double) : this() { @@ -84,6 +51,25 @@ class Triangle() { calculateAngles() } + private fun assignSides(func1: (Double) -> Double, func2: (Double) -> Double, angle: Double, sideName: String, side: Double){ + when (sideName) { + "a" -> { + a = Side(side, "a"); + c = Side(a / func1(angle), "c") + b = Side(c * func2(angle), "b") + } + "b" -> { + b = Side(side, "b") + c = Side(b / func2(angle), "c") + a = Side(c * func1(angle), "a") + } + "c" -> { + c = Side(side, "c") + a = Side(c * func1(angle), "a") + b = Side(c * func2(angle), "a") + } + } + } private fun calculateAngles() { alpha = Angle(asin(a.length / c.length).toDegree(), "alpha") @@ -96,7 +82,7 @@ class Triangle() { override fun toString(): String { - return "Seiten: $a, $b, $c Winkel: $alpha $beta $gamma" + return "Sides: $a, $b, $c Angles: $alpha $beta $gamma" } }