# Варианты заданий (20 вариантов) Вариант = номер студента в журнале (1–20). Если студентов больше 20 — вариант `N` = `(N - 1) % 20 + 1`. Каждый вариант состоит из: 1. **CPU-задача** (из `bank_задач.md`) с размером данных по уровню S/M/L; 2. **I/O-нагрузка** — одинаковая для всех по смыслу: `N_items` «запросов», каждый имитируется задержкой `delay = 0.05 c` (`common/tasks.py: io_fetch`); 3. **Список p** — количества потоков/процессов для замеров T(p). | Вариант | Задача | Уровень | Размер данных | I/O (items × delay) | p для замеров | |--------:|--------|:-------:|---------------|:-------------------:|:-------------:| | 1 | 1. Умножение матриц | S | n = 140 | 24 × 0.05 c | 1, 2, 4 | | 2 | 2. π методом Монте-Карло | M | 4 000 000 бросков | 48 × 0.05 c | 1, 2, 4 | | 3 | 3. Интегрирование | L | 10 000 000 отрезков, [0, 10] | 96 × 0.05 c | 1, 2, 4, 8 | | 4 | 4. Простые числа | S | M = 1 000 000 | 24 × 0.05 c | 1, 2, 4 | | 5 | 5. N ферзей | M | N = 11 | 48 × 0.05 c | 1, 2, 4 | | 6 | 6. Частотный анализ | L | 400 000 строк | 96 × 0.05 c | 1, 2, 4, 8 | | 7 | 7. Размытие (box blur) | S | 600 × 600 | 24 × 0.05 c | 1, 2, 4 | | 8 | 8. Хеширование SHA-256 | M | 600 000 строк | 48 × 0.05 c | 1, 2, 4 | | 9 | 9. Сортировка слиянием | L | 4 000 000 чисел | 96 × 0.05 c | 1, 2, 4, 8 | | 10 | 10. Игра «Жизнь» | S | 500 × 500, 20 поколений | 24 × 0.05 c | 1, 2, 4 | | 11 | 1. Умножение матриц | M | n = 180 | 48 × 0.05 c | 1, 2, 4 | | 12 | 2. π методом Монте-Карло | L | 8 000 000 бросков | 96 × 0.05 c | 1, 2, 4, 8 | | 13 | 3. Интегрирование | S | 3 000 000 отрезков, [0, 10] | 24 × 0.05 c | 1, 2, 4 | | 14 | 4. Простые числа | M | M = 2 000 000 | 48 × 0.05 c | 1, 2, 4 | | 15 | 5. N ферзей | L | N = 12 | 96 × 0.05 c | 1, 2, 4, 8 | | 16 | 6. Частотный анализ | S | 100 000 строк | 24 × 0.05 c | 1, 2, 4 | | 17 | 7. Размытие (box blur) | M | 900 × 900 | 48 × 0.05 c | 1, 2, 4 | | 18 | 8. Хеширование SHA-256 | L | 1 200 000 строк | 96 × 0.05 c | 1, 2, 4, 8 | | 19 | 9. Сортировка слиянием | S | 1 000 000 чисел | 24 × 0.05 c | 1, 2, 4 | | 20 | 10. Игра «Жизнь» | M | 700 × 700, 30 поколений | 48 × 0.05 c | 1, 2, 4 | ## Уровни размеров (справочно) | Задача | S | M | L | |--------|---|---|---| | 1. Матрицы | 140 | 180 | 220 | | 2. π Монте-Карло | 2 000 000 | 4 000 000 | 8 000 000 | | 3. Интегрирование | 3 000 000 | 6 000 000 | 10 000 000 | | 4. Простые числа | 1 000 000 | 2 000 000 | 4 000 000 | | 5. N ферзей | 10 | 11 | 12 | | 6. Частотный анализ | 100 000 | 200 000 | 400 000 | | 7. Box blur | 600 | 900 | 1200 | | 8. Хеширование | 300 000 | 600 000 | 1 200 000 | | 9. Сортировка | 1 000 000 | 2 000 000 | 4 000 000 | | 10. «Жизнь» | 500×500, 20 пок. | 700×700, 30 пок. | 900×900, 40 пок. | ## Как получить свои параметры в коде ```python from common.tasks import get_variant v = get_variant(13) # ваш номер варианта print(v["task_name"]) # "integrate" print(v["cpu_params"]) # {"a": 0.0, "b": 10.0, "n": 3_000_000} print(v["io"]) # {"items": 24, "delay": 0.05, "concurrency": 4} ``` ## Правило добросовестности Параметры варианта менять нельзя (иначе сравнение T(p) между студентами теряет смысл). Если ваша машина слишком медленная для уровня L — согласуйте с преподавателем переход на уровень M и отразите это в отчёте.