From 1316e578839602f500703fce9b7d8c114730b819 Mon Sep 17 00:00:00 2001 From: Tatiana Belova Date: Wed, 23 Feb 2022 13:56:17 +0400 Subject: [PATCH] Android homework --- src/main.kt | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main.kt b/src/main.kt index d1f117c..51dc05a 100644 --- a/src/main.kt +++ b/src/main.kt @@ -73,37 +73,41 @@ fun Shop.example(): Int? = customers.map { it.orders }.flatten().find { it.id == //TODO //Преобразовать список клиентов в сет -fun Shop.getSetOfCustomers(): Set = setOf() +fun Shop.getSetOfCustomers(): Set = customers.toSet() // Вернуть сет городов в которых проживают клиенты -fun Shop.getCitiesCustomersAreFrom(): Set = setOf() +fun Shop.getCitiesCustomersAreFrom(): Set = customers.map { it.city }.toSet() // Вернуть список клиентов из представленного города -fun Shop.getCustomersFrom(city: City): List = listOf() +fun Shop.getCustomersFrom(city: City): List = customers.filter { it.city == city }.toList() // Вернуть true если хоть один клиент из выбранного города -fun Shop.hasCustomerFrom(city: City): Boolean = false +fun Shop.hasCustomerFrom(city: City): Boolean = customers.any { it.city == city } // Вернуть количество клментов из выбранного города -fun Shop.countCustomersFrom(city: City): Int = 0 +fun Shop.countCustomersFrom(city: City): Int = getCustomersFrom(city).count() // Вернуть клиента из выбранного города или null, если нет таких -fun Shop.findAnyCustomerFrom(city: City): Customer? = null +fun Shop.findAnyCustomerFrom(city: City): Customer? = customers.firstOrNull { it.city == city } // Вернуть сет всех продуктов заказанных клиентом -fun Customer.getOrderedProducts(): Set = setOf() +fun Customer.getOrderedProducts(): Set = orders.flatMap { it.products }.toSet() // Отсортировать клиентов по количеству заказов от меньшего к большему -fun Shop.getCustomersSortedByNumberOfOrders(): List = listOf() +fun Shop.getCustomersSortedByNumberOfOrders(): List = customers.sortedBy { it.orders.count() } // Вернуть словарь в котором названия городов являются ключами, а значениями - сет клиентов, проживающих в этом городе -fun Shop.groupCustomersByCity(): Map> = mapOf() +fun Shop.groupCustomersByCity(): Map> = + customers.associate { it.city.title to this.getCustomersFrom(it.city).toSet() } // Вернуть сет клиентов, у которых не доставленных заказов больше чем заказанных -fun Shop.getCustomersWithMoreUndeliveredOrdersThanDelivered(): Set = setOf() +fun Shop.getCustomersWithMoreUndeliveredOrdersThanDelivered(): Set = customers.filter { customer -> + customer.orders.filter { !it.isDelivered }.count() > customer.orders.filter { it.isDelivered }.count() }.toSet() // Вернуть наиболее дорогой продукт из всех доставленных -fun Customer.getMostExpensiveDeliveredProduct(): Product? = null +fun Customer.getMostExpensiveDeliveredProduct(): Product? = + orders.filter { order -> order.isDelivered }.flatMap { it.products }.sortedBy { it.price }.reversed().firstOrNull() // Вернуть число - сколько раз был заказан выбранный продукт -fun Shop.getNumberOfTimesProductWasOrdered(product: Product): Int = 0 \ No newline at end of file +fun Shop.getNumberOfTimesProductWasOrdered(product: Product): Int = + customers.flatMap { it.orders }.flatMap { it.products }.filter { it == product }.count()