Курс Raku / Додаток 🆕 / Порядок виконання та функції / Підпрограми та функційний стиль / Вправи / Сума квадратів парних чисел

Розв’язання: Сума квадратів парних чисел

Ось одне з можливих розв’язань задачі.

Код

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.

Навігація курсом

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