---
# System prepended metadata

title: 8 команд

---

# 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, то просто проігнорувати

Все.

### 