Курс языка программирования Raku / Приложение 🆕 / Работа с данными / Числа и математика / Exercises / Шаги Коллатца

Решение: Шаги Коллатца

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

Код

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.

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

Шаги Коллатца   |   Одно число в трёх системах счисления