Урок 12.6 · Интерфейсы и сайты с нуля · Модуль 12. Праздник на экране · По подписке
Цель урока: Перемешать список участников так, чтобы никто не подарил сам себе, и научиться проверять результат случайного алгоритма.
Нужно знать заранее: Уроки 12.3 и 12.4
Объяснение
Зачем это нужно:
«Тайный Санта» — игра, где каждый дарит подарок одному участнику и не знает, кто дарит ему. На бумаге всё просто: два столбика имён и стрелки между ними. Сложность ровно одна — стрелки должны быть случайными и никто не должен попасть сам себе. Если просто «перемешать список», иногда получается именно это, и игра ломается.
Это первый урок курса, где случайность нужно не просто вызвать, а проверить результат и, если он негодный, повторить попытку. Так же устроены перемешивание карточек, выбор победителя и распределение задач в команде.
Как это работает:
Участники — это массив имён. Перемешивание — перестановка того же массива в случайном порядке. Надёжный способ — алгоритм Фишера — Йетса: идём с конца массива и на каждом шаге меняем текущий элемент со случайным из ещё не тронутых. Все перестановки при этом получаются равновероятными.
После перемешивания сопоставляем по индексу: первый участник дарит первому в перемешанном списке, второй — второму, и так далее. Получается список пар.
Проверка: считаем, в скольких парах имя дарителя совпало с именем получателя. Ноль — жеребьёвка годится, больше нуля — нужен повтор: while (нарушений > 0) { перемешать заново; пересчитать }.
Счётчик попыток обязателен. У while должен быть выход: если условие вдруг никогда не выполнится, страница зависнет. Ограничение вроде «не больше пятидесяти попыток» превращает зависание в понятный результат.
Проверка — отдельная функция. Она ничего не рисует и ничего не решает, только считает нарушения. Такую функцию можно вызвать и в консоли, и в настоящем тесте: проверка отделена от рисования — это и есть главная мысль урока.
Компьютер без страха — Файлы, браузер, пароли, мошенники, документы и деньги в интернете простыми словами. Бесплатно и без оплаты.
Если уже случилось — Деньги ушли с карты, пропала симка, взломали аккаунт, потерялись документы — порядок действий по шагам и куда звонить.
Какой компьютер нужен — Чек-лист по уровням: для учёбы ничего покупать не нужно, для своего проекта — 16 ГБ и SSD, для работы — 32 ГБ. Плюс нейросети и устаревание железа.
Без кода: ставить задачу — Как объяснить задачу программисту и принять работу. Кода нет ни строчки.
Профессии и языки — Кто такие программисты, зачем столько языков и что делать после курса.
Потренироваться
Практикум: задачи из жизни — Та же команда урока — на работе, дома и в документах. 63 задачи с проверкой вывода и без регистрации.
Игры-тренажёры — Найти ошибку в чужом коде, прочитать, что делает программа, и увидеть, что случится, если нажать клавишу.
Симулятор: от задания до сдачи — Пройти путь целиком: папка, терминал, файл, сохранение, запуск, проверка по критерию приёмки. Два сценария и две системы.
Мастерская экрана — Проверить цвета и раскладку страницы: контраст, шаблоны, конструктор.
Колесо фортуны — Одна прокрутка в день: скидка на подписку или дни доступа.
Словари и юмор
Словарь программиста — Слова из уроков и кода: парсинг, функция, хеш, компиляция.
Словарь руководителя — Слова из работы простыми словами: скоуп, дедлайн, MVP, бэклог.
Корявые задачи — Юмор: как ставят задачи и что из этого получается. С моралью.
Сайт, оплата и помощь
Родителям — Возраст, время на уроки, безопасность в сообществе, деньги и результат — что важно знать до оплаты.