Машина Поста Программа Деления Числа На 2

Машина Поста Программа Деления Числа На 2

Машина Поста Программа Деления Числа На 2 9,6/10 3336votes

Создайте компьютерную модель машины Поста, вычитающей два числа. В результате исполнения программы на ленте останется число 2 в унарной .

Программирование на машине Поста / Хабрахабр. Недавно на хабре появилось сразу два материала, посвященных языкам из «большой четверки тьюринговых трясин»: про алгоритм Маркова и Brainfuck.

Машина Поста Программа Деления Числа На 2

Думаю, для полноты картины будет интересно сравнить эти эзотерические системы с еще одним важным алгоритмическим примитивом — машиной Поста, которой я как раз занимаюсь. Машина Поста (wiki; для простоты оттуда же взят вариант синтаксиса) похожа на всем известную машину Тьюринга, однако обладает интересными особенностями.

Она содержит лишь 6 команд, кроме того, в ячейки- биты памяти могут записываться лишь 2 символа (двоичное кодирование информации). Таким образом, при программировании на машине Поста помимо необходимости совладать с оккамовским синтаксисом надо думать о том, как записать на ленте все промежуточные результаты, не потеряв по пути обратную тропинку к остаткам входных данных. Почему «остаткам»? Зачастую ввиду отсутствия дополнительной памяти приходится обрабатывать входные данные итеративно (а иногда и рекурсивно). Надеюсь, вышеизложенное убедительно доказывает, что написание привычных алгоритмов на машине Поста — неплохая разминка для мозгов и весьма увлекательное занятие. Пример. Рассмотрим одну из кратчайших реализаций умножения двух натуральных чисел. Числа n и m записываются на ленте в единичной системе счисления, разделяются одной пустой ячейкой. Финал Кубок Ссср По Футболу 1987 Г. Динамо Минск-Динамо Киев.

Вход/выход алгоритма может быть таким (отмечено начальное положение каретки). В каждом проходе цикла машина «откусывает» один бит от левого множителя и «копирует» самый правый имеющийся блок (сперва это второй множитель, затем — его последняя копия). Когда левый множитель «закончится», на ленте остается n блоков по m единиц. Их слияние дает искомое число n*m. Код. 0. 0 - главный цикл.

Проверить корректность алгоритма можно в уме, на листочке, либо с помощью этой программы. Это самая короткая известная мне реализация умножения. Однако, потенциально ее можно ужать еще сильнее, если придумать, как экономно объединить процессы создания копий и их слияния в единый массив. Если вас заинтересовала тема, предлагаю подумать над следующими задачами: Вывод i- го числа Фибоначчи. Деление двух натуральных чисел c остатком«Сборщик мусора». На ленте неизвестным образом распределено конечное количество (n) отмеченных ячеек. Необходимо «сгрести» их в одну кучу, т.

Машина Поста Программа Деления Числа На 2Машина Поста Программа Деления Числа На 2

Успенский В.А. Машина поста — М.: Наука, 1988. Упражнение 1. Составить программу деления чисел на 2, на 3, на 4., на заданное число k.

Машина Поста Программа Деления Числа На 2

Написать для машины Поста программу деления числа, записанного метками, на 2. Исходное число должно делиться на 2 без остатка. На ленте машины Поста расположен массив в Nотмеченных секций. Составить программу сложения 2-х целых неотрицательных чисел aиb. Каретка находится над крайней левой меткой левого числа. Найти остаток от деления целого неотрицательного числаkна 3, если известно, . Алгоритм (по Посту) — программа для машины Поста, приводящая к решению. 2) Если в задаче говорится, что на ленте задано число в унарной системе. Вычислить остаток от деления длины заданного массива на 3. Машина Поста, составить программу целочисленного деления двух. На ленте записаны 2 числа в унарной системе счисления(как . Алгоритм (по Посту) — программа для машины Поста, приводящая к решению. 2) Если в задаче говорится, что на ленте задано число в унарной. Вычислить остаток от деления длины заданного массива на 3. Программой машины Поста называется непустой список команд.

Машина Поста Программа Деления Числа На 2
© 2017

© 2017