diff options
author | Adam <adam@adambard.com> | 2016-02-12 11:42:25 -0800 |
---|---|---|
committer | Adam <adam@adambard.com> | 2016-02-12 11:42:25 -0800 |
commit | 5aa692f5f3bbfa7b79224748dcfd8ca5fba7a8bc (patch) | |
tree | 96efb7799650065adc79769d03c0b7616dcd7276 /ru-ru/brainfuck-ru.html.markdown | |
parent | b3c92c47b79f95be68f15d9d3b45161ae8b5e419 (diff) |
brainfuck->bf
Diffstat (limited to 'ru-ru/brainfuck-ru.html.markdown')
-rw-r--r-- | ru-ru/brainfuck-ru.html.markdown | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/ru-ru/brainfuck-ru.html.markdown b/ru-ru/brainfuck-ru.html.markdown deleted file mode 100644 index fcee185f..00000000 --- a/ru-ru/brainfuck-ru.html.markdown +++ /dev/null @@ -1,85 +0,0 @@ ---- -language: brainfuck -contributors: - - ["Prajit Ramachandran", "http://prajitr.github.io/"] - - ["Mathias Bynens", "http://mathiasbynens.be/"] -translators: - - ["Dmitry Bessonov", "https://github.com/TheDmitry"] -lang: ru-ru ---- - -Brainfuck (пишется маленькими буквами, кроме начала предложения) - это очень -маленький Тьюринг-полный язык программирования лишь с 8 командами. - -Вы можете испытать brainfuck в вашем браузере с помощью [brainfuck-визуализатора](http://fatiherikli.github.io/brainfuck-visualizer/). - -``` -Любой символ, кроме "><+-.,[]", игнорируется, за исключением кавычек. - -Brainfuck представлен массивом из 30000 ячеек, инициализированных нулями, -и указателем с позицией в текущей ячейке. - -Всего восемь команд: -+ : Увеличивает значение на единицу в текущей ячейке. -- : Уменьшает значение на единицу в текущей ячейке. -> : Смещает указатель данных на следующую ячейку (ячейку справа). -< : Смещает указатель данных на предыдущую ячейку (ячейку слева). -. : Печатает ASCII символ из текущей ячейки (напр. 65 = 'A'). -, : Записывает один входной символ в текущую ячейку. -[ : Если значение в текущей ячейке равно нулю, то пропустить все команды - до соответствующей ] . В противном случае, перейти к следующей инструкции. -] : Если значение в текущей ячейке равно нулю, то перейти к следующей инструкции. - В противном случае, вернуться назад к соответствующей [ . - -[ и ] образуют цикл while. Естественно, они должны быть сбалансированы. - -Давайте рассмотрим некоторые базовые brainfuck-программы. - -++++++ [ > ++++++++++ < - ] > +++++ . - -Эта программа выводит букву 'A'. Сначала программа увеличивает значение -ячейки №1 до 6. Ячейка №1 будет использоваться циклом. Затем программа входит -в цикл ([) и переходит к ячейке №2. Ячейка №2 увеличивается до 10, переходим -назад к ячейке №1 и уменьшаем ячейку №1. Этот цикл проходит 6 раз (ячейка №1 -уменьшается до нуля, и с этого места пропускает инструкции до соответствующей ] -и идет дальше). - -В этот момент мы находимся в ячейке №1, которая имеет значение 0, значение -ячейки №2 пока 60. Мы переходим на ячейку №2, увеличиваем 5 раз, до значения 65, -и затем выводим значение ячейки №2. Код 65 является символом 'A' в кодировке ASCII, -так что 'A' выводится на терминал. - - -, [ > + < - ] > . - -Данная программа считывает символ из пользовательского ввода и копирует символ -в ячейку №1. Затем мы начинаем цикл. Переходим к ячейке №2, увеличиваем значение -ячейки №2, идем назад к ячейке №1 и уменьшаем значение ячейки №1. Это продолжается -до тех пор, пока ячейка №1 не равна 0, а ячейка №2 сохраняет старое значение -ячейки №1. Мы завершаем цикл на ячейке №1, поэтому переходим в ячейку №2 и -затем выводим символ ASCII. - -Также имейте в виду, что пробелы здесь исключительно для читабельности. Вы можете -легко написать и так: - -,[>+<-]>. - -Попытайтесь разгадать, что следующая программа делает: - -,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> - -Программа принимает два числа на вход и умножает их. - -Суть в том, что программа сначала читает два ввода. Затем начинается внешний цикл, -сохраняя ячейку №1. Затем программа перемещается в ячейку №2, и начинается -внутренний цикл с сохранением ячейки №2, увеличивая ячейку №3. Однако появляется -проблема: В конце внутреннего цикла ячейка №2 равна нулю. В этом случае, -внутренний цикл не будет работать уже в следующий раз. Чтобы решить эту проблему, -мы также увеличим ячейку №4, а затем копируем ячейку №4 в ячейку №2. -Итак, ячейка №3 - результат. -``` - -Это и есть brainfuck. Не так уж сложно, правда? Забавы ради, вы можете написать -свою собственную brainfuck-программу или интерпретатор на другом языке. -Интерпретатор достаточно легко реализовать, но если вы мазохист, попробуйте -написать brainfuck-интерпретатор... на языке brainfuck. |