diff --git a/.idea/gradle.xml b/.idea/gradle.xml index f894050..9e088b6 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,6 +4,7 @@ diff --git a/.idea/misc.xml b/.idea/misc.xml index 38167d7..2266f6b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,9 @@ + + + diff --git a/src/main/kotlin/subtask1/HappyArray.kt b/src/main/kotlin/subtask1/HappyArray.kt index 804b0b1..d5ebd86 100644 --- a/src/main/kotlin/subtask1/HappyArray.kt +++ b/src/main/kotlin/subtask1/HappyArray.kt @@ -2,8 +2,25 @@ package subtask1 class HappyArray { - // TODO: Complete the following function fun convertToHappy(sadArray: IntArray): IntArray { - throw NotImplementedError("Not implemented") + + val resultList = mutableListOf() + + if (sadArray.isNotEmpty()) { + resultList.add(sadArray[0]) + for (i in 1 until sadArray.lastIndex) { + when { + (sadArray[i] <= resultList.last() + sadArray[i + 1]) -> resultList.add(sadArray[i]) + else -> { + for (j in resultList.lastIndex downTo 1) { + if (resultList[j] > resultList[j - 1] + sadArray[i + 1]) resultList.removeAt(j) + } + } + } + } + resultList.add(sadArray.last()) + } + return resultList.toIntArray() } } + diff --git a/src/main/kotlin/subtask2/BillCounter.kt b/src/main/kotlin/subtask2/BillCounter.kt index 2e6dbd9..3b6d814 100644 --- a/src/main/kotlin/subtask2/BillCounter.kt +++ b/src/main/kotlin/subtask2/BillCounter.kt @@ -1,10 +1,12 @@ package subtask2 class BillCounter { - - // TODO: Complete the following function - // The output could be "Bon Appetit" or the string with number(e.g "10") fun calculateFairlySplit(bill: IntArray, k: Int, b: Int): String { - throw NotImplementedError("Not implemented") + var result = "StringResult" + var billAnna = (bill.filter { i -> i != bill[k] }.sum()) / 2 + + if (billAnna == b) result = "Bon Appetit" + else result = (b - billAnna).toString() + return result } } diff --git a/src/main/kotlin/subtask3/StringParser.kt b/src/main/kotlin/subtask3/StringParser.kt index 373659e..2e8663e 100644 --- a/src/main/kotlin/subtask3/StringParser.kt +++ b/src/main/kotlin/subtask3/StringParser.kt @@ -2,8 +2,52 @@ package subtask3 class StringParser { - // TODO: Complete the following function fun getResult(inputString: String): Array { - throw NotImplementedError("Not implemented") + val target = listOf('(', ')', '<', '>', '[', ']') + val result = mutableListOf() + var count = 0 + var min = 0 + val max = inputString.length - 1 + + for (i in 0..max) { + if (target.contains(inputString[i])) { + when (inputString[i]) { + '(' -> { + if (i < max) min = i + 1 + count = 0 + for (j in min..max) { + when(inputString[j]) { + ')' -> if ( count == 0 ) result.add(inputString.substring(min, j)) + else count-- + '(' -> count++ + } + } + } + '[' -> { + if (i < max) min = i + 1 + count = 0 + for (j in min..max) { + when(inputString[j]) { + ']' -> if ( count == 0) result.add(inputString.substring(min, j)) + else count-- + '[' -> count++ + } + } + } + '<' -> { + if (i < max) min = i + 1 + count = 0 + for (j in min..max) { + when(inputString[j]) { + '>' -> if ( count == 0) result.add(inputString.substring(min, j)) + else count-- + '<' -> count++ + } + } + } + } + } + } + return result.toTypedArray() } }