# 8 команд ![](https://i.imgur.com/OBp9tFq.png) ## Передісторія ### Ґьодель ### Шьонфінкель ### Чьорч та Тьюринг ### Дємон Тьюринга ### Простий та нонстоп дємон ### Убердємон Тьюринга ### Чи може убєрдемон відрізнити дємона від нонстоп дємона ### Убердємон BRAINFUCK Brainfuck --- це спосіб та мова програмування, яка є еквівалентною убердємону Тьюринга, але має тільки 8 команд. Brainfuck оперує на стрічці пам'яті. Стрічка складається з однобайтних чисел від 0 до 255. При старті програми всі байти в стрічці заповнені нулями. В кожен момент часу убердємон може працювати з однією коміркою пам'яті. Ця комірка називається "поточною", а її номер по порядку називається поточним індексом. Програма для дємона записана окремо. Дємон виконує команди з цієї програми одна за одною. Команди для дємона: - `+` --- збільшити значення на 1 в поточній комірці. Якщо було число 255, то відбувається переповнення і число стає 0 - `-` --- те саме, але зменшити на 1. Якщо було 0, то стає 255 - `>` --- перемістити дємона на 1 комірку вправо. Вважати що пам'ять дємона нескінченна вправо. - `<` --- те сам, але вліво. Якщо дійшли до початку пам'яті, то поведінка не визначена. - `,` --- зчитати символ з клавіатури і записати його ASCII код в поточну комірку - `.` --- вивести число з поточної комірки як ASCII символ - `[` --- якщо число в поточній комірці не 0, то виконувати наступну команду ніби нічого й не сталось. Якщо 0, то пропустити всі команди в блоці `[ ... ]`, враховуючи вкладеність квадратних дужок - `]` --- якщо число в поточній комірці не 0, то стрибнути назад в програмі до відповідного `[`, враховуючи вкладеність. Якщо 0, то просто проігнорувати Все. ###