From 14f5c1624c240ad4600f9bae6f00800d36ecb991 Mon Sep 17 00:00:00 2001 From: Robert Manigk Date: Mon, 20 Feb 2023 19:33:57 +0100 Subject: [PATCH] Programming example sum of squares --- .../space.dezentrale.prgrnd/SumOfSquares.kt | 8 ++++++++ .../space.dezentrale.prgrnd/SumOfTwo.kt | 4 ++-- .../dezentrale/prgrnd/SumOfSquaresTest.kt | 20 +++++++++++++++++++ .../space/dezentrale/prgrnd/SumOfTwoTest.kt | 12 +++++------ 4 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 src/nativeMain/kotlin/space.dezentrale.prgrnd/SumOfSquares.kt create mode 100644 src/nativeTest/kotlin/space/dezentrale/prgrnd/SumOfSquaresTest.kt diff --git a/src/nativeMain/kotlin/space.dezentrale.prgrnd/SumOfSquares.kt b/src/nativeMain/kotlin/space.dezentrale.prgrnd/SumOfSquares.kt new file mode 100644 index 0000000..c208a98 --- /dev/null +++ b/src/nativeMain/kotlin/space.dezentrale.prgrnd/SumOfSquares.kt @@ -0,0 +1,8 @@ +package space.dezentrale.prgrnd + +class SumOfSquares { + fun calculate(intArray: IntArray): Int { + + return intArray.sumOf { it * it } + } +} \ No newline at end of file diff --git a/src/nativeMain/kotlin/space.dezentrale.prgrnd/SumOfTwo.kt b/src/nativeMain/kotlin/space.dezentrale.prgrnd/SumOfTwo.kt index 4b8ddd8..d5142bf 100644 --- a/src/nativeMain/kotlin/space.dezentrale.prgrnd/SumOfTwo.kt +++ b/src/nativeMain/kotlin/space.dezentrale.prgrnd/SumOfTwo.kt @@ -13,12 +13,12 @@ class SumOfTwo { } fun optimalSolution(nums: IntArray, target: Int): IntArray { - val numsToIndices = nums.mapIndexed { index: Int, num: Int -> num to index }.toMap() - println("numsToIndices = $numsToIndices") + val numsToIndices = mutableMapOf() for ((index, num) in nums.withIndex()) { if (numsToIndices.containsValue(target - num)) { return intArrayOf(numsToIndices[target - num]!!, index) } + numsToIndices[target] = index } return intArrayOf(-1, -1) } diff --git a/src/nativeTest/kotlin/space/dezentrale/prgrnd/SumOfSquaresTest.kt b/src/nativeTest/kotlin/space/dezentrale/prgrnd/SumOfSquaresTest.kt new file mode 100644 index 0000000..6b332fe --- /dev/null +++ b/src/nativeTest/kotlin/space/dezentrale/prgrnd/SumOfSquaresTest.kt @@ -0,0 +1,20 @@ +package space.dezentrale.prgrnd + +import kotlin.test.Test +import kotlin.test.assertEquals + +class SumOfSquaresTest { + @Test + fun `it calculates sum of one`() { + val sumOfSquares = SumOfSquares() + + assertEquals(4, sumOfSquares.calculate(intArrayOf(-2))) + } + + @Test + fun `it calculates sum of two`() { + val sumOfSquares = SumOfSquares() + + assertEquals(13, sumOfSquares.calculate(intArrayOf(-2, 3))) + } +} \ No newline at end of file diff --git a/src/nativeTest/kotlin/space/dezentrale/prgrnd/SumOfTwoTest.kt b/src/nativeTest/kotlin/space/dezentrale/prgrnd/SumOfTwoTest.kt index 875f483..4c19411 100644 --- a/src/nativeTest/kotlin/space/dezentrale/prgrnd/SumOfTwoTest.kt +++ b/src/nativeTest/kotlin/space/dezentrale/prgrnd/SumOfTwoTest.kt @@ -10,7 +10,7 @@ class SumOfTwoTest { val twoSum = sumOfTwo.simpleSolution(intArrayOf(2, 7, 11, 15), 9) - assertContentEquals(twoSum, intArrayOf(0, 1)) + assertContentEquals(intArrayOf(0, 1), twoSum) } @Test @@ -19,7 +19,7 @@ class SumOfTwoTest { val twoSum = sumOfTwo.simpleSolution(intArrayOf(3, 2, 4), 6) - assertContentEquals(twoSum, intArrayOf(1, 2)) + assertContentEquals(intArrayOf(1, 2), twoSum) } @Test @@ -28,7 +28,7 @@ class SumOfTwoTest { val twoSum = sumOfTwo.simpleSolution(intArrayOf(3, 3), 6) - assertContentEquals(twoSum, intArrayOf(0, 1)) + assertContentEquals(intArrayOf(0, 1), twoSum) } @Test @@ -37,7 +37,7 @@ class SumOfTwoTest { val twoSum = sumOfTwo.optimalSolution(intArrayOf(2, 7, 11, 15), 9) - assertContentEquals(twoSum, intArrayOf(0, 1)) + assertContentEquals(intArrayOf(0, 1), twoSum) } @Test @@ -46,7 +46,7 @@ class SumOfTwoTest { val twoSum = sumOfTwo.optimalSolution(intArrayOf(3, 2, 4), 6) - assertContentEquals(twoSum, intArrayOf(1, 2)) + assertContentEquals(intArrayOf(1, 2), twoSum) } @Test @@ -55,6 +55,6 @@ class SumOfTwoTest { val twoSum = sumOfTwo.optimalSolution(intArrayOf(3, 3), 6) - assertContentEquals(twoSum, intArrayOf(0, 1)) + assertContentEquals(intArrayOf(0, 1), twoSum) } } \ No newline at end of file