Мы продолжаем эксперименты с самым популярным и востребованным шаблоном проектирования: "Итератор". На этом уроке мы реализуем алгоритм перемешивания колоды. Для этого мы воспользуемся нестандартным способом, который напоминает игру: "Что? Где? Когда?".
Дата отправки отчёта:
31 января 2017 г.
Задание выполнено: за
15 мин.
Чему научился:
Интересный алгоритм перемешивания
Что было сложным:
ничего
Комментарии:
Я бы стала перемешивать, меняя несколько раз произвольные пары карт. Но этот алгоритм даже интереснее. Кроме того, мне понравилось решение с n=(n++)%52. Надо будет взять на заметку для своих скользящих фильтров :)
Да, алгоритмов перемешивания великое множество, под каждую задачи подходят один лучше, другие хуже. Но каждый выбирает для себя именно тот, который считает идеальным =)
Свой вариант перемешивания это классическая перестановка рандомных элементов между собой при проходе по массиву до выдачи карт. Первый скрин это предложенный метод волчка, второй скрин это классическое перемешивание методом перестановки.
Научился: Алгоритму выборку аля "Что? Где? Когда?" Вынес константы в класс Program() и сделал их статичными
Оптимизировал класс Cards(), теперь данные о размере колоды берутся на основе количества карт и мастей.
Так же и при формировании колоды вместо числа использована константа.
Названия карт и мастей теперь на русском языке =)
з.ы.
Можно было использовать список и выдёргивая оттуда рандомную карту в пределах размера текущего списка, после чего удалять выбранную карту и проверять, не равен ли список нулю, этот подход был бы более ООП =)
Но вариант с массивом работает быстрее!!!