tzxc 1.0.1
Terminal reverse subtraction loop module
License: MIT
Requires Python: >=3.8

![tzxc](https://raw.githubusercontent.com/ifuckingjoke/tzxc/refs/heads/main/logo.svg)

[EN](README-ENG.md)

# tzxc

Терминальный модуль с управляемым циклом обратного вычитания и
настраиваемым поведением выполнения.

------------------------------------------------------------------------

## Установка

```bash
pip install tzxc
```

------------------------------------------------------------------------

## Быстрый старт

```python
from tzxc import Tourter

game = Tourter()
game.zxc(delay=1)
```

------------------------------------------------------------------------

## Описание

Метод `zxc()` запускает цикл, начиная со значения `1000` и вычитая `7`
на каждой итерации.

Цикл останавливается, когда значение достигает `6`, если не включён
бесконечный режим.

Общее количество итераций при настройках по умолчанию: **143**.

------------------------------------------------------------------------

## API

### Класс

```python
Tourter()
```

При создании экземпляра класс сохраняет имя текущего пользователя
системы (используя `getpass.getuser()`), которое применяется для вывода
в автоматическом режиме.

------------------------------------------------------------------------

### Метод

```python
zxc(
    delay: int,
    infinity: bool = False,
    hard_mode: bool = False,
    ctrl_off: bool = False,
    crazy_mode: bool = False,
    lang: str = "ru"
)
```

------------------------------------------------------------------------

## Параметры

**delay** (`int`, обязателен)\
Задержка между действиями в секундах.\
В обычном режиме одна итерация занимает примерно `delay * 2` секунд.

------------------------------------------------------------------------

**infinity** (`bool`, по умолчанию `False`)\
Если `True`, после достижения значения `6` цикл начинается заново с
`1000`.

------------------------------------------------------------------------

**hard_mode** (`bool`, по умолчанию `False`)

Включает ручной режим:

- Пользователь должен вводить результат выражения `x - 7`
- Неправильные ответы подсчитываются
- После 5 неправильных ответов выполняется команда перезагрузки системы
- Правильный ответ сбрасывает счётчик ошибок

------------------------------------------------------------------------

**ctrl_off** (`bool`, по умолчанию `False`)\
Перехватывает сигнал `SIGINT` (Ctrl+C) и предотвращает прерывание.\
После завершения выполнения оригинальный обработчик сигнала
восстанавливается.

------------------------------------------------------------------------

**crazy_mode** (`bool`, по умолчанию `False`)\
Зарезервирован для будущих обновлений. В текущей логике выполнения не
используется.

------------------------------------------------------------------------

**lang** (`"ru"` | `"eng"`, по умолчанию `"ru"`)\
Определяет язык сообщений.

------------------------------------------------------------------------

## Поведение

### Обычный режим

1. Автоматическое выполнение  
2. Отображает выражение и вычисленный результат  
3. Ввод пользователя не требуется  

### Сложный режим

1. Требует ввода пользователя  
2. После 5 неправильных ответов выполняется команда перезагрузки системы:

- Windows → `shutdown /r /t 0`
- Linux → `sudo reboot`

------------------------------------------------------------------------

## Сложность

При `infinity=False`:

- 143 итерации  
- Временная сложность: `O(1)`  
- Пространственная сложность: `O(1)`  

В абстрактной модели (если начальное значение заменить на `n`) → `O(n)`.

------------------------------------------------------------------------

## Архитектура

Модуль использует:

- системные вызовы (`os`, `sys`)
- обработку сигналов (`signal`)
- задержки выполнения (`time`)
- определение имени пользователя (`getpass.getuser()`)

------------------------------------------------------------------------

## Детали инициализации

При запуске:

```python
x = 1000
uncorrect_answers = 0
```

Цикл реализован с помощью:

```python
while True:
```

Завершение работы контролируется вручную через `break`.

------------------------------------------------------------------------

## Количество итераций

Расчёт:

```
(1000 - 6) / 7 = 142
```

Так как финальное условие также проходит через цикл, общее количество итераций составляет 143.