Необходимо разработать класс (либо RESTful сервис), предоставляющий интерфейс
- Создать именованную колоду карт (колода создаётся упорядоченной)
- Удалить именованную колоду
- Получить список названий колод
- Перетасовать колоду
- Получить колоду по имени (в её текущем упорядоченном/перетасованном состоянии)
Необходимо спроектировать интерфейсы так, чтобы алгоритм перетасовки мог задаваться через конфигурацию приложения (путём выбора из «простой» и «эмуляция перетасовки вручную»). Необходимо самостоятельно спроектировать API для колоды и все типы данных.
Примечания:
- Колоды достаточно хранить в памяти, но подумать о том, как впоследствии работать с БД.
- Реализацию достаточно сделать для стандартной колоды игральных карт (52 штуки), но будет плюсом при решении помнить о том, что сортировщику карт всё равно, какую колоду тасовать.
- Алгоритм перетасовки достаточно реализовать «простой» (любой, самый быстрый в реализации); при желании можно реализовать «эмуляцию перетасовки вручную» (колода делится примерно посередине, части меняются местами, и так много раз).
В качестве бд используется PostgreSQL.
Перед запуском необходимо прописать данные в secrets.json в среде разработки:
{
"ConnectionString": "Server=localhost;Port=5432;Database=testdb;User Id=admin;Password=admin;"
}
Миграции: dotnet ef migrations add InitialCreate & dotnet ef database update