girniy.ru 1

Лабораторная работа 2


Пространства имен и компоновка

Игра «Быки и коровы»


Игра быки и коровы представляют собой вариацию на тему угадывания, когда один игрок задумывает некоторую сущность, а второй игрок, задавая формализованные определенным образом вопросы, должен эту сущность угадать.

В рамках указанной игры первый игрок задумывает последовательность чисел (в идеале — различных). Оба игрока знают длину последовательности и набор чисел, который может стоять на каждой позиции. Затем второй игрок называет свои попытки — последовательности той же длины. Первый игрок для каждой попытки подсчитывает степень ее совпадения, называя количество быков (чисел в последовательности, которые совпали с задуманными по величине и позиции) и коров (чисел, совпавших по значению, но не по позиции). Задача второго игрока по полученным данным восстановить задуманную последовательность, т.е. назвать такую цепочку, для которой количество быков будет равно количеству чисел в ней.

В классической версии загадываются четыре цифры от 0 до 9, и у второго игрока есть 10 попыток. Например, пусть первый ирок задумал число 1937. Второй игрок называет попытки:

1234 — 2 быка, 0 коров
5678 — 0 быков, 1 корова
1250 — 1 бык, 0 коров
1964 — 2 быка 0 коров
1937 — 4 быка 0 коров (угадал)

Постановка задачи


Разработайте библиотеку для игры в «быки и коровы». Библиотека должна содержать две функции — инициализация игры (компьютер задумывает комбинацию) и попытка (подсчет быков и коров для указанной комбинации). При инициализации необходимо указать параметры игры — длину последовательности, диапазон и, по желанию, количество попыток.

Реализуйте консольную игру на основе разработанной вами библиотеки.

Дополнительные требования

Библиотека и использующая ее программа должны находиться в разных модулях. Библиотека должна быть реализована в виде статической (.lib) библиотеки и заголовочного (.h) файла. Функции библиотеки должны находиться в некотором пространстве имен.