Lex Kravetski (lex_kravetski) wrote,
Lex Kravetski
lex_kravetski

Category:

Поиск фигни

Кстати, придумал задачу для любителей запаха монад по утрам, да и вообще для заинтересованных.

Есть у нас данные на сетке. Для простоты они сложены в двумерный массив. Данные намерянны каким-то прибором, который мог сломаться, что мы, в частности, узнаём по наличию в любой точке сетки значения, превышающего заранее заданную величину 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. При этом написать так, чтобы оно было короче и не имело существенных просадок по производительности в сравнении с данным конкретным примером.

Дерзайте, друзья.
Tags: программирование
Subscribe

  • Дискурс

    Российские любители неограниченного права суровой хозяйской руки шарить в интимных местах граждан ради гипотетической мощи государства почему-то…

  • Прямая демократия 2: Детали устройства

    Стрим «Прямая демократия 2: Детали устройства» будет во вторник, 01.12.2020, в 19:00 по московскому времени. Финансовую поддержку каналу можно…

  • (no subject)

    Говорят, Трамп объявил, что выборы выиграл он и даже уже назначил свою инаугурацию. Чёрт, кажется, я знаю, у кого он оперативненько научился. Эту…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 102 comments

  • Дискурс

    Российские любители неограниченного права суровой хозяйской руки шарить в интимных местах граждан ради гипотетической мощи государства почему-то…

  • Прямая демократия 2: Детали устройства

    Стрим «Прямая демократия 2: Детали устройства» будет во вторник, 01.12.2020, в 19:00 по московскому времени. Финансовую поддержку каналу можно…

  • (no subject)

    Говорят, Трамп объявил, что выборы выиграл он и даже уже назначил свою инаугурацию. Чёрт, кажется, я знаю, у кого он оперативненько научился. Эту…