Курс языка программирования 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Комментарии
Тернарный оператор
?? !!выбирает следующее значение одним выражением: делит$nпополам, если оно чётное ($n %% 2), и иначе применяет3 * $n + 1.27— знаменитый небольшой случай, который делает на удивление долгий крюк —111шагов — прежде чем наконец успокоиться на1.