From d425b7b68208fd8be586b90914483dbac15b22cb Mon Sep 17 00:00:00 2001 From: GIDROPES Date: Tue, 5 Nov 2024 19:46:33 +0300 Subject: [PATCH 1/7] Task 1 completed. --- src/main/kotlin/ru/otus/homework/persons/persons.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/ru/otus/homework/persons/persons.kt b/src/main/kotlin/ru/otus/homework/persons/persons.kt index fc1265d..d0095d5 100644 --- a/src/main/kotlin/ru/otus/homework/persons/persons.kt +++ b/src/main/kotlin/ru/otus/homework/persons/persons.kt @@ -2,12 +2,18 @@ package ru.otus.homework.persons /** * Отсортировать список персон по возрасту в порядке убывания + * */ -fun List.sortByAge(): List = TODO("Доделать sortByAge") +fun List.sortByAge(): List = sortedByDescending { it.age } + /** * Отсортировать список персон по фамилии * - Фамилии сортируются по алфавиту в порядке возрастания * - Если фамилии совпадают, персоны сортируются по имени в порядке возрастания */ -fun List.sortByName(): List = TODO("Доделать sortBySurname") \ No newline at end of file +fun List.sortByName(): List{ + return sortedWith( + compareBy{ it.name } + ) +} \ No newline at end of file From 76aed06094e9185e01de0d7fede545f07b40c2de Mon Sep 17 00:00:00 2001 From: GIDROPES Date: Tue, 5 Nov 2024 20:33:08 +0300 Subject: [PATCH 2/7] Task 2 completed with CustomComparator. Tests passed --- .../kotlin/ru/otus/homework/persons/persons.kt | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/ru/otus/homework/persons/persons.kt b/src/main/kotlin/ru/otus/homework/persons/persons.kt index d0095d5..33872e0 100644 --- a/src/main/kotlin/ru/otus/homework/persons/persons.kt +++ b/src/main/kotlin/ru/otus/homework/persons/persons.kt @@ -1,5 +1,7 @@ package ru.otus.homework.persons +import java.util.Comparator + /** * Отсортировать список персон по возрасту в порядке убывания * @@ -13,7 +15,17 @@ fun List.sortByAge(): List = sortedByDescending { it.age } * - Если фамилии совпадают, персоны сортируются по имени в порядке возрастания */ fun List.sortByName(): List{ - return sortedWith( - compareBy{ it.name } - ) + val customComparator = Comparator{ obj1: Person, obj2: Person -> + if(obj1.surname != obj2.surname){ + if (obj1.surname > obj2.surname) return@Comparator 1 + else return@Comparator -1 + } + else{ + if (obj1.name > obj2.name) return@Comparator 1 + else if (obj1.name < obj2.name) return@Comparator -1 + else return@Comparator 0 + } + } + + return sortedWith(customComparator) } \ No newline at end of file From 59d4d455ad2629d1d954994af488e970dc9072d9 Mon Sep 17 00:00:00 2001 From: GIDROPES Date: Tue, 5 Nov 2024 20:51:08 +0300 Subject: [PATCH 3/7] Task 3 completed. Tests passed --- src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt b/src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt index 913be37..b3750c6 100644 --- a/src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt +++ b/src/main/kotlin/ru/otus/homework/mapswap/mapSwap.kt @@ -3,4 +3,8 @@ package ru.otus.homework.mapswap /** * Меняет местами ключи и значения */ -fun Map.swap(): Map = TODO("Доделать swap") \ No newline at end of file +fun Map.swap(): Map{ + val resultMap:MutableMap = mutableMapOf() + forEach{resultMap.put(it.value,it.key)} + return resultMap.toMap() +} \ No newline at end of file From fd47ec6b2fea765ff59a7cbd91a113bc0c147267 Mon Sep 17 00:00:00 2001 From: GIDROPES Date: Tue, 5 Nov 2024 21:51:44 +0300 Subject: [PATCH 4/7] Task 4 completed. Tests passed --- src/main/kotlin/ru/otus/homework/NaturalList.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/ru/otus/homework/NaturalList.kt b/src/main/kotlin/ru/otus/homework/NaturalList.kt index a8a41b1..ce26863 100644 --- a/src/main/kotlin/ru/otus/homework/NaturalList.kt +++ b/src/main/kotlin/ru/otus/homework/NaturalList.kt @@ -35,14 +35,19 @@ class NaturalList(n: Int) : List { * Вернуть под-список этого списка, включая [fromIndex] и НЕ включая [toIndex] */ override fun subList(fromIndex: Int, toIndex: Int): List { - TODO("Not yet implemented") + val tempList:MutableList = mutableListOf() + for (i in fromIndex..): Boolean { - TODO("Not yet implemented") + override fun containsAll(elements: Collection): Boolean{ + elements.forEach{ if (!this.contains(it)) return false } + return true } override fun toString(): String { From 5ac96432943c88d0a17414d9a717e2860956bd67 Mon Sep 17 00:00:00 2001 From: GIDROPES Date: Wed, 6 Nov 2024 22:23:20 +0300 Subject: [PATCH 5/7] Task 5 completed. Tests passed --- src/main/kotlin/ru/otus/homework/NaturalList.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/ru/otus/homework/NaturalList.kt b/src/main/kotlin/ru/otus/homework/NaturalList.kt index ce26863..d03368d 100644 --- a/src/main/kotlin/ru/otus/homework/NaturalList.kt +++ b/src/main/kotlin/ru/otus/homework/NaturalList.kt @@ -4,6 +4,7 @@ package ru.otus.homework * Список натуральных чисел от 1 до n * @param n Последнее натуральное число в списке */ + class NaturalList(n: Int) : List { override val size: Int = n @@ -58,13 +59,13 @@ class NaturalList(n: Int) : List { * Функция должна возвращать true, если сравнивается с другой реализацией списка тех же чисел * Например, NaturalList(5) должен быть равен listOf(1,2,3,4,5) */ - override fun equals(other: Any?): Boolean = false + override fun equals(other: Any?): Boolean = other.hashCode() == this.hashCode() /** * Функция должна возвращать тот же hash-code, что и список другой реализации тех же чисел * Например, NaturalList(5).hashCode() должен быть равен listOf(1,2,3,4,5).hashCode() */ - override fun hashCode(): Int = -1 + override fun hashCode(): Int = this.toList().hashCode() } private class NaturalIterator(private val n: Int) : Iterator { From 4a725c8f4139c2ab34f77d3a9923d2ddc85dc018 Mon Sep 17 00:00:00 2001 From: GIDROPES Date: Sat, 9 Nov 2024 23:55:39 +0300 Subject: [PATCH 6/7] Task 5. Equals remake --- src/main/kotlin/ru/otus/homework/NaturalList.kt | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/ru/otus/homework/NaturalList.kt b/src/main/kotlin/ru/otus/homework/NaturalList.kt index d03368d..2c6fc9f 100644 --- a/src/main/kotlin/ru/otus/homework/NaturalList.kt +++ b/src/main/kotlin/ru/otus/homework/NaturalList.kt @@ -5,6 +5,8 @@ package ru.otus.homework * @param n Последнее натуральное число в списке */ + + class NaturalList(n: Int) : List { override val size: Int = n @@ -54,18 +56,29 @@ class NaturalList(n: Int) : List { override fun toString(): String { return "NaturalList(1..$size)" } - /** * Функция должна возвращать true, если сравнивается с другой реализацией списка тех же чисел * Например, NaturalList(5) должен быть равен listOf(1,2,3,4,5) */ - override fun equals(other: Any?): Boolean = other.hashCode() == this.hashCode() + override fun equals(other: Any?): Boolean { + if (other is NaturalList) { + + if (other.size != this.size) return false + else { + for (i in 0.. { From 441c228e60d3840f0a44fe9b5772beed88f5dc4c Mon Sep 17 00:00:00 2001 From: GIDROPES Date: Mon, 11 Nov 2024 15:49:15 +0300 Subject: [PATCH 7/7] Task 5. hashCode remake, tests passed! --- src/main/kotlin/ru/otus/homework/NaturalList.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/ru/otus/homework/NaturalList.kt b/src/main/kotlin/ru/otus/homework/NaturalList.kt index 2c6fc9f..f85a909 100644 --- a/src/main/kotlin/ru/otus/homework/NaturalList.kt +++ b/src/main/kotlin/ru/otus/homework/NaturalList.kt @@ -77,7 +77,14 @@ class NaturalList(n: Int) : List { * Функция должна возвращать тот же hash-code, что и список другой реализации тех же чисел * Например, NaturalList(5).hashCode() должен быть равен listOf(1,2,3,4,5).hashCode() */ - override fun hashCode(): Int = this.toList().hashCode() + override fun hashCode(): Int { + var multiplyResult = 1 + this.forEach { + multiplyResult = 31 * multiplyResult + it + } + return multiplyResult + } + }