Игра "Быки и Коровы" (Telegram бот)
Продолжаю изучать программирование и в качестве учебной задачи запилил нового бота. Бот реализует довольно известную игру "Быки и Коровы" (Статья на wiki - https://ru.wikipedia.org/wiki/%D0%91%D1%8B%D0%BA%D0%B8_%D0%B...). В классическом варианте цифры не могут повторяться и число не может начинаться с нуля. По-моему это излишне упрощает и без того несложную игру, поэтому ноль может стоять на первом месте и цифры могут повторяться в любых количествах.
Чтобы поиграть - нужно переписываться с ботом в мессенджере Telegram. У телеграма есть клиенты для любых телефонов и компьютеров. Есть даже веб-версия, так что ничего устанавливать не обязательно (подробнее - https://telegram.org/)
Самого бота можно найти по ссылке https://telegram.me/bulls_and_cows_numbers_bot
Или поиском в самом телеграме по словам bulls_and_cows_numbers_bot
ПРАВИЛА:
Игра состоит в следующем: бот загадывает 4 цифры, игроку предлагается угадать это число, использовав как можно меньше попыток. После каждой попытки бот сообщает подсказку (количество быков и коров). Делая правильные выводы из полученных подсказок можно угадать число в среднем за 6 - 7 попыток. Число попыток не ограничено.
Подробнее о том, как считается количество быков и коров:
Пример: загадано 0250, ваш ответ - 0202.
1) Считаем количество быков, для этого смотрим цифры вашего ответа по порядку.
- первая цифра 0 - бык, т.к. в 0250 на первом месте тоже 0
- вторая цифра 2 - бык, т.к. в 0250 на втором месте тоже 2
- третья цифра 0 - не бык, т.к. в 0250 на третьем месте 5
- четвертая цифра 2 - не бык, т.к. в 0250 на четвертом месте 0
Итого 2 быка. (2Б)
2) Считаем количество коров, для этого смотрим цифры вашего ответа по порядку,
но только те которые не являются быками:
- первая цифра 0 - уже бык, поэтому не может быть коровой, хотя в загаданном числе она есть еще и на третьем месте
- вторая цифра 2 - уже бык, тоже не может быть коровой
- третья цифра 0 - корова, т.к. не бык и при этом есть в 0250 на четвертом месте
- четвертая цифра 2 - не бык и не корова. Она присутствует в 0250, но первые две цифры уже заняты быками, т.е. мы должны проверить есть ли 2 среди последних цифр __50.
Иными словами каждая цифра в загаданном числе и в ответе может соответствовать только одному животному.
Итого 1 корова. (1К)
Т.е. подсказка на ваш ответ будет 0202 2Б 1К
Ещё примеры:
1) загадано 1111 ответ 1214 - 2Б 0К
2) загадано 2342 ответ 3222 - 1Б 2К
3) загадано 5678 ответ 6587 - 0Б 4К
4) загадано 1234 ответ 1111 - 1Б 0К
Ну, как смог, так и объяснил =)
Если в правилах что-то не понятно - пишите в комментариях, постараюсь пояснить
Для тех кому интересно: бот написан на python. База данных - MariaDB. В качестве хостинга (и заодно IDE) используется c9.io (кстати рекомендую - крутая штука)


