Игра "Быки и коровы"

 

          Изучая книгу Б.Страуструпа "Программирование. Принципы и практика с использованием С++" встретил интересную логическую игру "Быки и коровы". Суть игры проста: компьютер загадывает комбинацию из четырех неповторяющихся цифр от 1 до 9, а игрок должен отгадать не только сами цифры, но и последовательность их размещения. Угаданная цифра в правильной позиции - бык, в неправильной - корова. Цель: получить 4 быка за наименьшее число ходов. В Интернете есть множество описаний алгоритмов, но я не встретил описания самой реализации загадывания и проверки ходов пользователя.

          Вооружившись MS VS 2015 и некоторой порцией логики я написал эту консольную игру. Сам текст приводить не буду, он полностью тут, рассмотрю только некоторые интересные моменты:

1. constexpr unsigned short int vs = 4 - количество загадываемых цифр

2. srand((unsigned int)time(0)) - инициализация генератора случайных чисел

3. int ne = rand() % 9 + 1 - генерация случайных чисел от 1 до 9

4. setlocale(0, "") - установка русского языка для консоли

5. for (int g : zv) - последовательный перебор всех элементов целочисленного вектора zv

Для прекращения игры и выхода вводится 'e' или 'q'

UPD: Немного упростил начальное заполнение загаданного набора цифр и сравнение количества угаданных цифр, используя std::set. Тут второй вариант

          Как обычно пожелания и предложения принимаются в WhatsApp и на почту

Published on May 29th, 2019