Тестовое задание
Необходимо разработать класс (либо RESTful сервис), предоставляющий интерфейс
• Создать именованную колоду карт (колода создаётся упорядоченной)
• Удалить именованную колоду
• Получить список названий колод
• Перетасовать колоду
• Получить колоду по имени (в её текущем упорядоченном/перетасованном состоянии)
Необходимо спроектировать интерфейсы так, чтобы алгоритм перетасовки мог задаваться через конфигурацию приложения (путём выбора из «простой» и «эмуляция перетасовки вручную»). Необходимо самостоятельно спроектировать API для колоды и все типы данных.
Примечания: • Колоды достаточно хранить в памяти, но подумать о том, как впоследствии работать с БД. • Реализацию достаточно сделать для стандартной колоды игральных карт (52 штуки), но будет плюсом при решении помнить о том, что сортировщику карт всё равно, какую колоду тасовать. • Алгоритм перетасовки достаточно реализовать «простой» (любой, самый быстрый в реализации); при желании можно реализовать «эмуляцию перетасовки вручную» (колода делится примерно посередине, части меняются местами, и так много раз).
При отправке решения, укажите, пожалуйста, сколько времени было потрачено
Разместите ссылку на Ваше решение в GitHub или GitLab
В качестве тестового реализован сервис на базе asp.netcore с использоваением библиотек: MediatR, Swagger, FluentValidations, Tests: FluentAssertations (не успела покрытие на интеграционном уровне) AspNetCore. В качестве решения предлагаются 4 метода RestApi:
- Создание Колоды из 32 или 54 карт с опредленным именем
- Получение текущего состояния колоды карт на основе состояния памяти прилоежния
- Перемешивание карт путем мануальной настройки (задаются места, где колода делится пополам и правая с левой частью меняются)
- Мермешивание карт путем случайной генерации Для запросов и ответов используются dto в виде record-ов
На решение было потрачено 5 часов Используются дженерики, интерфейсы, мидлвары, фабрики и другие популярные способы решения проблем при написании крупных приложений