Быки и Коровы
Виноват я, гулял много. А в пятницу сдавать надо , и времени, блин, нету (работа).
Может кто-то когда-то делал эту игрушку. Подкинте алгоритм плиииииииииз.X)
Помогите студенту.
Виноват я, гулял много. А в пятницу сдавать надо , и времени, блин, нету (работа).
Может кто-то когда-то делал эту игрушку. Подкинте алгоритм плиииииииииз.X)
Что значит алгоритм?
Тебе надо правила игры?
Или чтоб ты отгадывал числа, а комп тебе говорил "2 быка 2 коровы"?
Или чтоб комп отгадывал числа, а ты ему говорил "2 быка 2 коровы"?
Или создать игровой сервер с миничатом, чтобы чуваки из разных стран друг с другом играли?
Что значит алгоритм?
Тебе надо правила игры?
Да НЕТ! Алгоритм - Чтобы человек загадал число, а компьютер отгадывал. Человек возвращает число быков и коров, а программа методом... любым методом, кроме перебора, пытается отгадать.
Алгоритм можно в любом виде включая Basic, C, Pascal, или любая другая форма.:{
Кстати по идее здесь все равно будет перебор, токо с накоплением статистических данных и учетом вероятности.
Попахивает искусственным интелектом... :roll:
Кстати по идее здесь все равно будет перебор, токо с накоплением статистических данных и учетом вероятности.
Да, делай топориком.
1. Выбираем случайное 4-хзначное число.
2. Получаем ответ пользователя.
3. Выбрасываем из рассмотрения те числа, которые не удовлетворяют условию.
4. Переходим к п.1
Этот метод не будет оптимальным в плане отгадывания за наименьшее число ходов. Зато его писать несложно.
Надумал вот алгоритм отгадывающий за 10 ходов при условии что говорится о 4-х значном числе, каждая цифра от 0 до 9, и нет повторяющихся цифор. Прога сначала запрашивает 7 вариантов - от 0123,01234...0129. По изменению ответов человека за первые 7 интеграций определяет все 4 чифры, причем одна из них точно Бык (ну и остальные коровы). Потом еще максимум за 3 интеграции находит ответ. Профессор забраковал - говорит что первые 7 ин-ций это перебор. С рекурсией советует делать. Голова пухнет. ПОМОГИТЕ!!! X)-
Серж абсолютно прав. Это и есть самый что ни есть настоящий искусственный интелект (Artificial Intellect), курс так и называется.
Надумал вот алгоритм отгадывающий за 10 ходов при условии что говорится о 4-х значном числе, каждая цифра от 0 до 9, и нет повторяющихся цифор. Прога сначала запрашивает 7 вариантов - от 0123,01234...0129. По изменению ответов человека за первые 7 интеграций определяет все 4 чифры, причем одна из них точно Бык (ну и остальные коровы). Потом еще максимум за 3 интеграции находит ответ. Профессор забраковал - говорит что первые 7 ин-ций это перебор. С рекурсией советует делать. Голова пухнет. ПОМОГИТЕ!!! X)-
Ну я ж тебе описал алгоритм. Повторяю подробнее.
Создаешь массив всех возможных вариантов.
В начале у тебя их будет 10*9*8*7 = 5040 штук
Дальше повторяешь в цикле (рекурсией или не рекурсией - это уже не важно) следующие операции:
1. Выбираешь случайное число из массива.
2. Задаешь пользователю, получаешь ответ.
3. Выбрасываешь из массива те числа, которые не удовлетворяют ответу пользователя.
И так до тех пор, пока в массиве не останется одно число (если останется 0 - значит где-то пользователь ошибся).
Пример:
Первый запрос: 1234 Ответ: 2 быка 2 коровы.
После первого запроса из 5040 вариантов останется только шесть:
2134
3214
4231
1324
1432
1243
Допустим следующий ход: 4231 Ответ 1б 3к
Остаются:
2134
3214
1432
1243
Ходим: 3214 Ответ: 4к
Остаются:
1432
Ходим: 1432 Ответ: 4 быка, давайте зачетку.
Серж абсолютно прав. Это и есть самый что ни есть настоящий искусственный интелект (Artificial Intellect), курс так и называется.
Надумал вот алгоритм отгадывающий за 10 ходов при условии что говорится о 4-х значном числе, каждая цифра от 0 до 9, и нет повторяющихся цифор. Прога сначала запрашивает 7 вариантов - от 0123,01234...0129. По изменению ответов человека за первые 7 интеграций определяет все 4 чифры, причем одна из них точно Бык (ну и остальные коровы). Потом еще максимум за 3 интеграции находит ответ. Профессор забраковал - говорит что первые 7 ин-ций это перебор. С рекурсией советует делать. Голова пухнет. ПОМОГИТЕ!!! X)-
Причем тут рекурсия - это всего лишь метод написания алгоритма, можешь циклом, можешь рекурсий, но как было у тебя первые 7 иттераций так и останется, какая разница...
Тут надо учить алгоритм действовать по принципу человека, т.е. пытаться угадать, учить строить догадки, предположения
Тут уже просто так не выкинешь какие-то определенные числа... я думал мы такую задачу решаем
А если на 1234 будет 2 коровы, т.е. загадано число 6712
Тут уже просто так не выкинешь какие-то определенные числа... я думал мы такую задачу решаем
Можно конечно заставить алгоритм тогда начать переставлять эти четыре числа пока он точно не добьется двух коров, а потом начать прибавлять остальные числа, но не думаю, что это будет быстрее...
А если на 1234 будет 2 коровы, т.е. загадано число 6712
Тут уже просто так не выкинешь какие-то определенные числа... я думал мы такую задачу решаем
Сереж, ты меня неправильно понял. Выкидываем числа, а не цифры. Метод, описанный выше, универсальный (хотя и не оптимальный с точки зрения минимального количества ходов, я могу предложить и поинтереснее). Просто выписывать все числа, которые удовлетворяют ходу 1234=2к, показалось мне напряжным :)
Ну я ж тебе описал алгоритм....
Довольно Оригинальное решение. Сейчас как раз пытаюсь воплотить его в жизнь. Правда не знаю на сколько это можно назвать интеллектом. Мы пользуемся тем что комп может перебрать 5040 вариантов за несколько секуд. Ты бы смог играть по такому алгоритму? Посмотрим, может прокатит, опций все равно особо не остается. Попросил перенести сдачу на воскресение (у нас это рабочий день :( ). Либо Пан либо пропал
Кстати, оптимальный алгоритм (о котором я упоминал в предыдущих постах) тоже будет основан на переборе (причем еще большем!).
:D . Спасибо всем! (Если кому надо - обращайтесь)