Користувальницькькі налаштування

Налаштування сайту


brainfuck

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Остання ревізія По сторонах наступні версії
brainfuck [2017/09/22 18:33]
brainfuck [2022/09/24 14:39]
127.0.0.1 зовнішнє редагування
Рядок 1: Рядок 1:
 +====== Написание модулей на Brainfuck ======
  
 +Начиная, с релиза Ubilling 0.8.5 Valhalla стало возможным использовать код на [[https://ru.wikipedia.org/wiki/Brainfuck|Brainfuck]] в своих модулях.
 +
 +====== Зачем? ======
 +Язык Brainfuck известен своим минимализмом и кроме того является Тьюринг-полным языком. Наша команда разработчиков в свою очередь считает, что изящный и в это же время функциональный синтаксис Brainfuck как нельзя лучше подходит для разработки прикладных модулей для Ubilling, и максимально соответствует его идеологии. Также мы не приемлем дискриминацию в любых ее проявлениях, и считаем, что все имеют право разрабатывать модули для Ubilling, в независимости от пола, расы, религии, половой ориентации и взаимоотношений с тяжелыми наркотиками.
 +
 +====== Немного примеров ======
 +Подключаем интерпретатор Brainfuck из соответствующей библиотеки. 
 +<code php>
 +require_once('api/vendor/bf/Brainfuck.php');
 +$bf=new dotzero\Brainfuck();
 +</code>
 +
 +Просто выполнение кода:
 +<code php>
 +$code = '++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++.>+.+++++++..+++.<<++.>+++++++++++++.+++++++++++++.>------.+++..---.+++++.<+++++.';
 +$bf->setCode($code);
 +show_window(__('Brainfuck code execution result'), $bf->run(true));
 +</code>
 +
 +А если нам хочется передать какие-то входные данные? Все так же очень просто:
 +<code php>
 +$bf->setCode('>,[>,]<[<]>[.>]');
 +$bf->setInput('this is input data');
 +show_window('input test', $bf->run(true));
 +</code>
 +
 +Но возможно мы хотим инкапсулировать внутрь PHP код, работать с базой и делать другие крутые вещи, например показать список пользователей в виде красивой таблички? Да сколько влезет:
 +<code php>
 +$code='++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>++++++.>>---.+++++++++++..<---------.<----.>>++++++++++++++.-----------------'
 +        . '-------.---.----------.++++++++++++++++++++++++++++++.--------------.+++++++++++++.<++++++++++.>-------------.++++++++'
 +        . '+++++++.<------.>--------..<++++++++++++++++++.>++++++++.<++++++++++++++.>--.<++++++.------.>++++++++.<++++.>--------.'
 +        . '<-------------------------.>---.--------.++.+++++.+++++.<<++++++++.+.>-----------------.<---------.>>.-----------.++++'
 +        . '+++.++++++++.------------------------.++++++++++++++++++++++++.--------------.+++++.----------.+++++++++++.++++++++.<<+'
 +        . '+++++++.>>------------------------..<<.-.>>----------.++++++++++++++++++++++++++++++.--------------.+++++++++++++.+.<<'
 +        . '-------.>>-------.---.++++++++++.+.<<+++++++.++.+++.------------..>>+++.------------------.---.---.----------.++++++++'
 +        . '++++++++++++++++++++++.--------------.+++++++++++++.<++++++.>..-----------------.++++++++++++++++++++++++.<++++++++++++'
 +        . '++++++.>-----------------.+++++++.++++++++.<++++++++++++++++++.>-----.<<++++++++.----.>----.>------..<<+++++..+++++++++'
 +        . '+++++++++.';
 +$bf->setCode($code);
 +$bf->execute();
 +</code>
 +
 +Ну и собственно результат:\\
 +{{:bfuserlist.png?600|}}
 +
 +
 +====== Памятка по синтаксису ======
 +Весь синтаксис, состоит аж из 8-ми операторов:
 +
 +  - **>** Перейти к следующей ячейке
 +  - **<** Перейти к предыдущей ячейке
 +  - **+** Увеличить значение в текущей ячейке на 1
 +  - **-** уменьшить значение в текущей ячейке на 1
 +  - **.** напечатать значение текущей ячейки
 +  - **,** Ввести извне значение и сохранить в текущую ячейку
 +  - **[** Если значение текущей ячейки - ноль, перейти вперед по тексту программы к **]** с учетом вложенности
 +  - **]** Если значение текущей ячейки не равен нулю, перейти назад по тексту программы с **[** с учетом вложенности
brainfuck.txt · Востаннє змінено: 2023/06/16 12:36 повз borisov