Курс языка программирования Raku / Приложение 🆕 / Порядок выполнения и функции / Подпрограммы и функциональный стиль / Exercises / Сумма квадратов чётных чисел

Решение: Сумма квадратов чётных чисел

Вот один из возможных вариантов решения задачи.

Код

say [+] (1..10).grep(* %% 2).map(* ** 2);

🦋 Исходный код можно найти в файле sum-even-squares.raku.

Вывод

220

Комментарии

  1. Цепочка читается слева направо: .grep(* %% 2) оставляет чётные числа, .map(* ** 2) возводит каждое в квадрат, а [+] сворачивает квадраты в их сумму.

  2. Чётные числа 2 4 6 8 10 в квадратах дают 4 16 36 64 100, что в сумме составляет 220.

  3. Те же шаги можно записать конвейером подачи, где ==> передаёт каждый результат следующему этапу, так что поток читается сверху вниз, а не как цепочка методов:

    (1..10)
        ==> grep(* %% 2)
        ==> map(* ** 2)
        ==> sum()
        ==> say();

    Каждый ==> подаёт список слева от себя в следующую подпрограмму, а завершающий ==> say() печатает итог — 220.

Навигация по курсу

Сумма квадратов чётных чисел   |   Описание по типу