Кодирование Фибоначчи кодирует целое число в двоичное число с использованием представления числа Фибоначчи. Идея основана на теореме Цекендорфа, которая гласит, что каждое положительное целое число может быть записано однозначно в виде суммы различных несмежных чисел Фибоначчи (0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 141, …… ..).
Кодовое слово Фибоначчи для конкретного целого числа — это в точности целочисленное представление Цекендорфа с обратным порядком его цифр и добавлением дополнительной «1» в конце. Дополнительная 1 добавляется для обозначения конца кода (обратите внимание, что код никогда не содержит двух последовательных единиц в соответствии с теоремой Цекендорфа . Представление использует числа Фибоначчи, начинающиеся с 1 (2-го числа Фибоначчи). Таким образом, используемые числа Фибоначчи 1, 2 , 3, 5, 8, 13, 21, 34, 55, 89, 141, …….
Учитывая число n, выведите его код Фибоначчи.
Примеры:
Input: n = 1 Output: 11 1 is first Fibonacci number in this representation and an extra 1 is appended at the end. Input: n = 11 Output: 001011 11 is sum of 8 and 3. The last 1 represents extra 1 that is always added. A 1 before it represents 8. The third 1 (from beginning) represents 3.
Мы настоятельно рекомендуем вам свернуть браузер и попробовать это в первую очередь.
Следующий алгоритм принимает целое число в качестве входных данных и генерирует строку, в которой хранится кодировка Фибоначчи.
Найти наибольшее число Фибоначчи f, меньшее или равное n. Скажи, что это я номер в серии Фибоначчи. Длина кодового слова для n будет i + 3 символа (один для дополнительного 1 добавляется в конце, один, потому что я индекс, и один для '/ 0'). Предполагая, что ряд Фибоначчи хранится:
- Пусть f будет наибольшим числом Фибоначчи, меньшим или равным n, с добавлением «1» в двоичной строке. Это указывает на использование f в представлении для n. Вычтите f из n: n = n — f
- Иначе, если f больше n, добавьте «0» к двоичной строке.
- Перейти к числу Фибоначчи чуть меньше, чем f.
- Повторяйте до нулевого остатка (n = 0)
- Добавьте дополнительную '1' к двоичной строке. Мы получаем кодировку, в которой две последовательные единицы указывают на конец числа (и начало следующей).
Ниже приведена реализация вышеуказанного алгоритма.
|
python3
|
Выход:
Fibonacci code word for 143 is 01010101011
иллюстрация
Область применения:
Обработка и сжатие данных — представление данных (которые могут быть текстом, изображением, видео…) таким образом, чтобы пространство, необходимое для хранения или передачи данных, было меньше размера входных данных. Статистические методы используют коды переменной длины, причем более короткие коды назначаются символам или группе символов, которые имеют более высокую вероятность появления. Если коды должны использоваться по шумному каналу связи, их устойчивость к вставке битов, удалению и к переворотам битов имеет большое значение.
Подробнее о приложении читайте здесь .
Эта статья предоставлена Яшем Варяни . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме
Рекомендуемые посты:
- Проверьте, делит ли M-ое число Фибоначчи на N-ое число Фибоначчи
- MakeMyTrip Интервью Опыт | Набор 6 (онлайн-кодирование)
- Проблема с перемешиванием карт | TCS Digital Advanced Coding Question
- Слово Фибоначчи
- N-е XOR число Фибоначчи
- Поиск Фибоначчи
- Четвёртое четное число Фибоначчи
- Номера Фибоначчи
- GCD и числа Фибоначчи
- Сумма чисел Фибоначчи
- Четная сумма чисел Фибоначчи
- K- серия Фибоначчи
- Фибоначчи по модулю р
- Задача Фибоначчи (Значение Fib (N) * Fib (N) — Fib (N-1) * Fib (N + 1))
- Сила Фибоначчи
0.00 (0%) 0 votes