Поиск
lex_kravetski — 30.08.2012
Кстати, придумал задачу для любителей запаха монад по утрам, да и
вообще для заинтересованных.Есть у нас данные на сетке. Для простоты они сложены в двумерный массив. Данные намерянны каким-то прибором, который мог сломаться, что мы, в частности, узнаём по наличию в любой точке сетки значения, превышающего заранее заданную величину maxValue. Нам надо выяснить, не сломался ли прибор как минимум по этому критерию, но не просто выяснить, а ещё показать любое значение, превысившее максимальное — чисто для пафоса. У вас-де вот в этой точке аж вот столько, чините прибор.
Решение задачи с императивным подходом просто и прозаично.
int value = 0; a: for (int x = 0; x < xSize; x++) { for (int y = 0; y < ySize; y++) { int v = data[x][y]; if (v > maxValue) { value = v; break a; } } }
Прозаично, понятно и правильно работает, но не круто. Круто написать то же самое не просто на Scala, но с for-comprehension или с использованием каких-то методов scala-коллекций и без break. При этом написать так, чтобы оно было короче и не имело существенных просадок по производительности в сравнении с данным конкретным примером.
Дерзайте, друзья.
ТОП-7 лучших таск-менеджеров для маркетологов — рейтинг 2025-2026 года
Американские режиссеры индонезийской трагедии
Привет, зимазима!
«Начинали с двух коробок пластилина»: как появился Иж-2715 и почему его не
"А за городом - зима, зима, зима..."
Без названия
летний портрет. закат
Расселение сiнташтiнцив
Буратино, 2025

