Курс Raku / Додаток 🆕 / Робота з даними / Числа та математика / Вправи / Кроки Коллатца

Розв’язання: Кроки Коллатца

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

Код

my $n = 27;
my $steps = 0;

while $n != 1 {
    $n = $n %% 2 ?? $n div 2 !! 3 * $n + 1;
    $steps++;
}

say $steps;

🦋 Знайдіть програму у файлі collatz.raku.

Вивід

111

Коментарі

  1. Тернарний оператор ?? !! обирає наступне значення одним виразом: ділить $n навпіл, коли воно парне ($n %% 2), а інакше застосовує 3 * $n + 1.

  2. 27 — славетний невеликий випадок, що робить напрочуд довгий гак — 111 кроків, — перш ніж нарешті осісти на 1.

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

Кроки Коллатца   |   Одне число у трьох системах числення