4.3 KiB
4.3 KiB
Варианты заданий (20 вариантов)
Вариант = номер студента в журнале (1–20). Если студентов больше 20 — вариант
N = (N - 1) % 20 + 1.
Каждый вариант состоит из:
- CPU-задача (из
bank_задач.md) с размером данных по уровню S/M/L; - I/O-нагрузка — одинаковая для всех по смыслу:
N_items«запросов», каждый имитируется задержкойdelay = 0.05 c(common/tasks.py: io_fetch); - Список 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 пок. |
Как получить свои параметры в коде
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 и отразите это в отчёте.