diff --git a/src/main/kotlin/ru/otus/homework/NaturalList.kt b/src/main/kotlin/ru/otus/homework/NaturalList.kt index a8a41b1..7e84fdd 100644 --- a/src/main/kotlin/ru/otus/homework/NaturalList.kt +++ b/src/main/kotlin/ru/otus/homework/NaturalList.kt @@ -35,14 +35,16 @@ class NaturalList(n: Int) : List { * Вернуть под-список этого списка, включая [fromIndex] и НЕ включая [toIndex] */ override fun subList(fromIndex: Int, toIndex: Int): List { - TODO("Not yet implemented") + if (fromIndex < 0 || toIndex > size || fromIndex > toIndex) { + throw IndexOutOfBoundsException("Invalid range: $fromIndex to $toIndex") + } + return (fromIndex + 1 until toIndex + 1).map { it } } - /** * Returns true if list contains all numbers in the collection */ override fun containsAll(elements: Collection): Boolean { - TODO("Not yet implemented") + return elements.all { it in 1..size } } override fun toString(): String { diff --git a/src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt b/src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt index 913be37..9072dd5 100644 --- a/src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt +++ b/src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt @@ -1,6 +1,4 @@ package ru.otus.homework.mapswap - -/** - * Меняет местами ключи и значения - */ -fun Map.swap(): Map = TODO("Доделать swap") \ No newline at end of file +fun Map.swap(): Map { + return this.entries.associate { (key, value) -> value to key } +} diff --git a/src/main/kotlin/ru/otus/homework/persons/persons.kt b/src/main/kotlin/ru/otus/homework/persons/persons.kt index fc1265d..c0ded3b 100644 --- a/src/main/kotlin/ru/otus/homework/persons/persons.kt +++ b/src/main/kotlin/ru/otus/homework/persons/persons.kt @@ -1,13 +1,7 @@ package ru.otus.homework.persons - -/** - * Отсортировать список персон по возрасту в порядке убывания - */ -fun List.sortByAge(): List = TODO("Доделать sortByAge") - -/** - * Отсортировать список персон по фамилии - * - Фамилии сортируются по алфавиту в порядке возрастания - * - Если фамилии совпадают, персоны сортируются по имени в порядке возрастания - */ -fun List.sortByName(): List = TODO("Доделать sortBySurname") \ No newline at end of file +fun List.sortByAge(): List { + return this.sortedByDescending { it.age } +} +fun List.sortByName(): List { + return this.sortedWith(compareBy { it.surname }.thenBy { it.name }) +}