Пример A-7. Последовательности Коллаца (Collatz)

Пример A-7. Последовательности Коллаца (Collatz)

#!/bin/bash

# collatz.sh

# Широко известная последовательность Коллаца (Collatz) (гипотеза Коллаца).

# -------------------------------------------

# 1) Принимает из командной строки "начальное" целое число.

# 2) ЧИСЛО <--- НАЧАЛЬНОЕ ЗНАЧЕНИЕ

# 3) Вывести ЧИСЛО.

# 4) Если ЧИСЛО четное, разделить на 2,

# 5)+ Если не четное -- умножить на 3 и прибавить 1.

# 6) ЧИСЛО <--- РЕЗУЛЬТАТ

# 7) Повторить, начиная с п. 3, заданное число раз.

#

# Теоретически, такая последовательность должна сходиться,

#+ не зависимо от величины начального значения,

#+ к повторению циклов "4,2,1...",

#+ даже после значительных флуктуаций в самом начале.

MAX_ITERATIONS=200

# Для больших начальных значений (>32000), это значение придется увеличить.

h=${1:-$$} # Начальное значение

# если из командной строки ничего не задано, то берется $PID,

echo

echo "C($h) --- $MAX_ITERATIONS итераций"

echo

for ((i=1; i<=MAX_ITERATIONS; i++))

do

echo -n "$h "

# ^^^^^

# табуляция

let "remainder = h % 2"

if [ "$remainder" -eq 0 ] # Четное?

then

let "h /= 2" # Разделить на 2.

else

let "h = h*3 + 1" # Умножить на 3 и прибавить 1.

fi

COLUMNS=10 # Выводить по 10 значений в строке.

let "line_break = i % $COLUMNS"

if [ "$line_break" -eq 0 ]

then

echo

fi

done

echo

exit 0

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Последовательности (Sequences)

Из книги Руководство по стандартной библиотеке шаблонов (STL) автора Ли Менг

Последовательности (Sequences) Последовательность - это вид контейнера, который организует конечное множество объектов одного и того же типа в строгом линейном порядке. Библиотека обеспечивает три основных вида последовательных контейнеров: vector (вектор), list (список) и deque


Последовательности команд

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

Последовательности команд Часто для выполнения определенного действия пользователь должен по очереди раскрывать несколько пунктов меню. Например, чтобы запустить в Windows Vista программу Блокнот, нужно выполнить следующие действия.1. Нажать кнопку Пуск.2. Выбрать пункт Все


Управляющие последовательности

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Управляющие последовательности Как и в других языках, подобных C, строковые литералы в C# могут содержать различные управляющие последовательности, которые интерпретируются как определенный набор данных, предназначенных для отправки в выходной поток. Каждая


Сортировка в убывающей последовательности

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Сортировка в убывающей последовательности Для сортировки в убывающей последовательности задайте ключевое слово после имени поля, по которому проводится сортировка. Например, если нужно отобрать из таблицы tblOrder записи так, чтобы сначала располагались самые последние


2.33. Генерирование последовательности строк

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

2.33. Генерирование последовательности строк Изредка бывает необходимо получить «следующую» строку. Так, следующей для строки "aaa" будет строка "aab" (затем "aac", "aad" и так далее). В Ruby для этой цели есть метод succ:droid = "R2D2"improved = droid.succ # "R2D3"pill = "Vitamin B"pill2 = pill.succ     # "Vitamin C"He


Непредсказуемые числовые последовательности

Из книги Программирование игр и головоломок автора Арсак Жак

Непредсказуемые числовые последовательности Редко бывает нужно получить только одно случайное число. Чаще нужно получить много таких чисел. Большая часть игр, представленных в этой книге, требует, чтобы играющий с компьютером по ходу игры встречался, сообразно с


Числовые последовательности

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Числовые последовательности Вот две известные в информатике головоломки. Сожалею, что обманываю ожидания своих коллег, которые не найдут здесь ничего нового…?* Головоломка 5. Последовательность Хэмминга.Рассмотрим числа, не имеющие других простых делителей, кроме 2, 3 и 5.


21.3.2. Управляющие последовательности

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

21.3.2. Управляющие последовательности Существуют несколько отдельных типов управляющих последовательностей. Самый простой тип представляет собой символ перехода (^[), за которым следует один командный символ. (Несмотря на то что символ перехода отображается в строках С


21.3.4. Составные управляющие последовательности

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

21.3.4. Составные управляющие последовательности Пять двухсимвольных управляющих последовательностей (которые показаны в табл. 21.3) фактически являются префиксами более длинных и сложных последовательностей. Рассмотрим каждую из них по очереди.Таблица 21.3. Составные


Последовательности

Из книги автора

Последовательности Последовательность - это набор данных, которые можно перебрать один за другим в некотором порядке. К разновидностям последовательностей относятся одномерные динамические массивы array of T, списки List<T>, двусвязные списки LinkedList<T>, множества