Быки и коровы. Разработка оптимальной стратегии игры «Быки и коровы» на основе теории информации Быки и коровы классическая игра

Быки и коровы - логическая игра для двоих игроков. Для неё достаточно иметь листок бумаги и ручку, свободное время и немного везения. Как правило, такое время находится у школьников и студентов. Но мне, вашему покорному слуге, не довелось в свои годы узнать эту забаву. Хотя почему бы не размять своё серое вещество на досуге? Это неплохая тренировка для ума, не требующая сильного напряжения, и как развлечение вполне себя оправдывает.

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

Далее игроки по очереди делают ходы, то есть пытаются угадать задуманное противником число. Но спрашивать они обязаны так же в виде четырёхзначного числа. К примеру нас спросят: "Твоё число 3094?". В ответ же мы должны сообщить количество быков и коров. Бык - это цифра, которая есть в нашем загаданном числе и находится на той же позиции. А корова - это цифра, которая так же есть в нашем числе, но находится не на своём месте. В нашем случае получаем две коровы, это цифры 3 и 0, и один бык, это 4. Теперь будем спрашивать мы, и так далее, до тех пор, пока кто-либо не разгадает полностью число. То есть в ответе он получит четыре быка. На картинке показан пример игры. Времени на одну партию требуется совсем немного. На практике обычно требуется от 5 до 8 ходов, но есть уникумы, которые умудряются и за три хода победить. Конечно в таком успехе есть немалая доля везения.

На нашем сайте Вы можете играть в "быки и коровы" как против компьютера, так и онлайн с живым противником. Внизу игровой комнаты для Вашего удобства есть игровой чат, в котором можно подобрать себе противника для игры по сети, либо спросить совета. Так же если у Вас есть замечания по реализации нашей игры, предложения по её улучшению или развитию - то пишите нам. Можно писать как на форуме, так и нам на почту mail@сайт.

Разновидности игры

Вариантов игры великое множество:

  • 1. По типу угадываемой последовательности - это может быть число. В классике - это четырёхзначное без повторений, состоящее из цифр от 0 до 9. Так же может увеличиваться количество цифр в числе, возможность их повторения. В качестве последовательности могут использоваться цвет, какая либо криптограмма, слово.
  • 2. По типу самой игры. В эпоху компьютеров появилась возможность играть одному. Когда человек угадывает число, задуманное компьютером, либо против компьютера. Но машину трудно победить, тут больше вопрос правильно заложенного алгоритма в неё. Игроки играют в классический вариант, но находятся на значительном удалении друг от друга. Игроки угадывают по очереди число, которое задумал компьютер - тут возможны варианты как так называемого горячего стула, когда оппоненты находятся рядом и играют за одним компьютером, так и удалённо.

На данный момент реализован только классический вариант игры. Если у Вас есть идеи, какой вариант быков и коров должен появиться на нашем сайте, то поделитесь ими с нами.

Когда я поступил в институте, очень популярной была игра «Быки и коровы ». Так совпало, что в это же время я прочитал математическую новеллу Альфреда Реньи «Дневник. – Записки студента по теории информации». Благодаря этой статье я познакомился с . И у меня родилась идея, как улучшить свои показатели в «Быках и коровах», опираясь на новые знания .

Кратко напомню правила. Играют двое. Каждый задумывает и записывает тайное 4-значное число с неповторяющимися цифрами (первой может быть и ноль). Игрок, который начинает игру по жребию, делает попытку отгадать число. Попытка - это 4-значное число с неповторяющимися цифрами, сообщаемое противнику в виде вопроса. Противник говорит в ответ, сколько цифр угадано с совпадением их позиций в тайном числе и сколько угадано без совпадения. Например: задумано тайное число 3219; попытка (вопрос) 2310; результат (ответ): один «бык» (цифра 1 из вопроса входит в тайное число и стоит на своем месте) и две «коровы» (цифры 2 и 3 из вопроса входят в тайное число, но стоят не на своем месте). Ответ сообщается в виде 2-значного числа. В нашем примере ответ – 12 (один «бык», две «коровы»). Игроки делают попытки по очереди. Побеждает тот, кто первым получит на свой вопрос ответ 40.

Скачать заметку в формате или , примеры в формате , пример в формате zip (внутри Excel-файл на 57МВ).

Вот какие идеи теории информации мне показались полезными для улучшения показателей в игре (см. ):

  1. Вопрос нужно задавать так, чтобы ответ на него давал максимальное количество информации.
  2. Для этого вопрос нужно формировать так, чтобы вероятности различных ответов были по возможности близкими.
  3. Кроме того, вопрос должен быть таким, чтобы ответ на него не содержал информацию, полученную ранее из предыдущих вопросов.

Для лучшего понимания материала полезно также открыть Excel-файл.

1. Тайное число можно задумать 10*9*8*7 = 5040 способами (на первом месте может стоять любая из 10 цифр, на втором – любая из 9 оставшихся и т.д.). Для того, чтобы сформировать массив допустимых чисел я использовал простые алгоритмы в Excelе (см. листы «Подг1» и «Подг2»). Поскольку вероятность быть задуманным любого из 5040 чисел одинакова, неопределенность (Н) вычисляется по формуле Хартли : Н = log 2 N. Перед началом игры неопределенность составляет log 2 5040 = 12,30 бит информации.

2. Понятно, что первый вопрос может быть любым, например, 0123. На него возможны 14 ответов (см. также лист «Вопрос1» Excel-файла):

Ответ Число ответов р H h
00 360 7,1% 8,49 3,81
01 1440 28,6% 10,49 1,81
02 1260 25,0% 10,30 2,00
03 264 5,2% 8,04 4,25
04 9 0,2% 3,17 9,13
10 480 9,5% 8,91 3,39
11 720 14,3% 9,49 2,81
12 216 4,3% 7,75 4,54
13 8 0,2% 3,00 9,30
20 180 3,6% 7,49 4,81
21 72 1,4% 6,17 6,13
22 6 0,1% 2,58 9,71
30 24 0,5% 4,58 7,71
40 1 0,02% 0,00 12,30
5040 100,0% 12,30 2,77

Здесь: р – вероятность ответа, Н – неопределенность, оставшаяся после соответствующего ответа, h – количество информации, полученное, если реализовался тот или иной ответ. Наиболее вероятный ответ – 01, означающий, что из вопроса в тайное число входит лишь одна цифра, причем стоит она не на своем месте. Ответ 01 подразумевает, что задуманным может быть одно из 1440 чисел, то есть неопределенность, оставшаяся после этого ответа, составляет log 2 1440 = 10,49 бит, а информация, полученная при таком ответе 12,30 – 10,49 = 1,81 бит. Ответ 40 дает 12,30 бит информации, а неопределенности после него не остается J Поскольку вероятности ответов различны, количество информации, содержащееся в вопросе определяется по формуле Шеннона: Н(x) = p 1 log 2 (1/p 1) + p 2 log 2 (1/p 2) + … + p N log 2 (1/p N). Первый вопрос приносит 2,77 бит информации.

3. При выборе второго вопроса следует руководствоваться тремя идеями сформулированными выше. На практике это означает, что вопрос должен допускать ответ 40 .

Правило формирования второго вопроса. Пусть на первый вопрос (0123) мы получили ответ 01. Для второго вопроса возьмем одну цифру из первого вопроса, поставим ее на новое место и добавим три новые цифры. Получим, например, 4561. Если на вопрос1 был получен, например, ответ 11, надо взять две цифры из первого вопроса, одну оставить на своем месте, вторую поставить на новое место, и добавить две новые цифры; например, 0435.

На вопрос2 4561 также возможны 14 ответов (см. лист «Вопрос2»):

Ответ Число ответов р H h
00 54 3,8% 5,75 4,74
01 378 26,3% 8,56 1,93
02 369 25,6% 8,53 1,96
03 91 6,3% 6,51 3,98
04 6 0,4% 2,58 7,91
10 126 8,8% 6,98 3,51
11 222 15,4% 7,79 2,70
12 83 5,8% 6,38 4,12
13 6 0,4% 2,58 7,91
20 57 4,0% 5,83 4,66
21 31 2,2% 4,95 5,54
22 5 0,3% 2,32 8,17
30 11 0,8% 3,46 7,03
40 1 0,07% 0,00 10,49
1440 100,0% 10,49 2,86

Выбранный нами второй вопрос принес 2,86 бита информации. Посмотрим, сколько информации дадут другие вторые вопросы. Для этих целей я создал отдельный файл «Неоптимальный второй вопрос.xlsx» (он «весит» 58МВ, поэтому будьте с ним аккуратнее:)). Второй вопрос может быть одним из 5040 возможных чисел (в том числе и повторение первого вопроса). В итоге этого исследования я получил количество информации, которое дают те или иные вторые вопросы (напомню, что анализ сделан в предположении, что первый вопрос 0123 дал ответ 01). Например, вопрос2 – 0123 дает ноль битов информации, так как на него возможен только один ответ 01, а (для N = 1) log 2 1 = 0. Вопрос2 0132 дает 0,65 бит информации, вопрос2 0148 – 2,53 бита информации. Максимальное количество информации дают 1440 вторых вопросов, сформированных по выше описанному правилу. Результаты исследования я перенес на лист «Разные вопросы2» файла «Быки-коровы.xlsx» и далее буду говорить только об этом файле.

Как я уже сказал, максимальное количество информации – 2,859 – будет получено на вопрос2, подготовленный следующим образом: надо взять одну цифру из первого вопроса, поставить ее на новое место и добавить три новые цифры:

Информация от вопроса2, бит Число таких вопросов
0,000 1
0,650 6
0,811 8
0,918 9
1,899 24
2,104 72
2,258 144
2,268 72
2,365 216
2,372 48
2,530 180
2,624 360
2,664 720
2,756 360
2,766 480
2,767 720
2,774 180
2,859 1440
Итого 5040

Видно, что еще 180 вопросов дают почти столько же информации – 2,774 бита. Такое количество информации будет получено при ответе, например, на вопрос 1045 (см. лист «Вопрос2неопт»). Но этот вопрос не может дать ответа 40! То есть, вопрос подготовлен с нарушением сформулированного правила. Насколько велика разница в информации между 2,859 и 2,774 бита!? На первый взгляд она не выглядит большой. С другой стороны, при самом неблагоприятном ответе на вопрос2 4561 (01) останется 378 вариантов тайного числа, а при самом неблагоприятном ответе на вопрос2 1045 (также 01) – 408 вариантов. На 8% больше! Это и есть цена неоптимального вопроса.

4. При подготовке третьего (и последующих) вопросов я руководствуюсь следующим мнемоническим правилом. Необходимо составить агрегированную таблицу всех возможных тайных чисел, удовлетворяющих ответам на предыдущие вопросы. После этого сформировать вопрос3, используя ту часть этой таблицы, которая содержит больше вариантов (оценку произвожу «на глазок»). Немного запутанно? Давайте рассмотрим два примера.

Пример1.

Вопрос1 0123 Ответ1 01
Вопрос2 4561 Ответ2 01

Первый вариант: входит единица, тогда не входят, ни 023, ни 456; то есть входят, не использовавшиеся в первых двух вопросах, цифры – 789. Получаем набор цифр тайного числа 1789 (порядок их расположения любой, удовлетворяющий ответам на первые два вопроса). Вариантов, отвечающих этому набору, 12.

Второй вариант: единица не входит, тогда входит одна цифра из 023, одна – из 456, и две – из 789. Записываю я это так:

Ориентировочное число вариантов набора цифр равняется 3 (одна из 023) * 3 (одна из 456) * 3 (две из 789) = 27. А с учетом мест расположения цифр вариантов существенно более 100. Для вопроса3 берем одну цифру из 023, одну из 456, две из 789. Располагаем цифры так, чтобы не было совпадений мест расположения с вопросом1 и вопросом2. Более того, располагаем цифры, которые ранее уже встречались (4 и 2) на совершенно новых местах, то есть на 2-м или 4-м. Например, вопрос3 7482 лучше, чем 2784. Так как в первом случае 4-ка и 2-ка стоят на местах, которые в вопросе1 и вопрос2 они не занимали. В то же время, в вопросе3 2784 цифра 2 стоит на месте 4-ки из вопроса2 (см. лист «Вопрос3»). Ответ на вопрос3 4782 содержит 2,958 бит информации, а ответ на вопрос 3 2784 – «только» 2,955.

Пример2. Первые два вопроса и ответа были следующими:

Вопрос1 0123 Ответ1 02
Вопрос2 3541 Ответ2 02

Первый вариант: входят 13, тогда не входят, ни 02, ни 45, а из оставшихся цифр входят две:

Количество тайных числе в варианте1 – 48.

Второй вариант: входит одна цифра из 13, тогда входит одна – из 02, одна – из 45, и одна – из 6789:

Ориентировочное количество тайных чисел в варианте2 – более 100.

Третий вариант: не входят 13, тогда входят и 02, и 45: 0245. Количество тайных чисел в варианте3 – 8.

5. Когда тайных чисел остается мало (от 4 до 10…20), я перехожу на полный перебор всех возможных вариантов.

Играйте с алгоритмом, построенным на основе теории информации, и выигрывайте!

Нурым Кенжебеков написал программу, позволяющую играть с компьютером. Программа работает под Windows 7, 8, 8.1 с установленным Framework 4.5. Игра мне очень понравилась, но алгоритм явно далек от оптимального. Я сыграл трижды и все три раза выиграл.

Скачать программу в формате .

http://slovesnov.narod.ru/articles/bullcow.pdf . Сказать по правде, мне не удалось ее осилить 🙂 Но упоминаний теории информации при беглом просмотре я в ней не нашел…

Здравствуйте.
Еще осенью на 2 курсе в качестве лабораторной работы по «Теории автоматов» преподаватель на ходу придумывал нам задания, ориентируяюсь на наши пожелания в оценке. В основном это были игры. Кому-то достался хоккей, кому-то теннис, мне же досталась не столь известная логическая игра «Быки и коровы» .


Нужно было реализовать хоть какое-то обоснованное поведение компьютера в игре с человеком. Но я пошел дальше и уже через месяц компьютер в большинстве случаев легко обыгрывал моих однокурсников. А по предмету был получен автомат. Программу получите после описания алгоритмов.

Суть игры

Игрок и компьютер загадывают четырехзначные числа, используя цифры от 0 до 9 . Игроки пытаются разгадать числа соперника, посылая ему возможные варианты чисел, в ответ получая два числа - число «быков» и число «коров» . Что же это за числа такие?
  • «Быки» - правильные цифры на правильных местах. Четыре «быка» - залог победы, мечта каждого фермера.
  • «Коровы» - правильные цифры на неправильных местах.
Для понимания приведу пример:
Загадано число 1622 . Если мы предположим 6112 , то в ответ придет: 1 бык (четвертая цифра «2» на своем месте), 2 коровы (шестерка и единица не на своих местах).

Оперируя данными о «скоте» противника, нужно угадать число быстрей него.

Первый же тривиальный алгоритм, который так и напрашивается, - это перебирать наборы «1111», «2222», «3333»... до тех пор, пока не будет получен полный набор, а затем генерировать перемещения этого набора.

Например, загадано то же число 1622 , мы предполагаем «1111» , получаем в ответ «быка» , затем «2222» - получаем в ответ уже 2 «быков» , «3333» - пусто, «4444» - пусто, «5555» - пусто, «6666» - 1 бык .
Дальше продолжать не будем, так как набралось уже 4 быка в сумме. Осталось найти нужную комбинацию. Будем генерировать перестановки, пока не получим Та-дааам: «1226», «1262», «1226», «1262», «1622» . Все.

Очевидно, что алгоритм не очень хорош, зато понятный и не запутаться. Максимальное число ходов для угадывания - 10(«7890»)+24 перестановки. 34 - это в самом худшем случае. Конечно возможно перебор и перестановки всячески оптимизировать, например перебирать поочередно с двух концов - «1111», «0000», «2222», «9999»... так же оптимизировать генерацию перестановок при наличии одинаковых цифр(как в нашем примере - несколько раз спрашиваем одно и то же).
Но не будем этим заниматься. Пусть данная стратегия будет у нас легким уровнем сложности компьютера.

Много я сидел на парах и играл сам с собой, пытаясь придумать какой то свой крутой алгоритм. Но приходили только единичные идеи, из которой я не мог составить единой стратегии. Начал изучать литературу. Наткнулся на статьи, рода «угадывание за 7 ходов». Они меня не привлекли, поскольку там очень много ветвления. Но прочитав книгу нашего Кировского профессора(но не из нашего университета) С.М. Окулова «Программирование в алгоритмах» , я нашел описание довольно простого и достаточно эффективного алгоритма. В нем используется так называемый «метод решета» (примером может служить известное «решето Эрастофена» - классическая задача поиска простых чисел). Мы рассматриваем конечное множество всех возможных чисел и каждый ход исключаем все элементы множества, не представляющие интереса.

Например, для загаданного числа 1234 мы предположили 5678 , и получили 0 быков и 0 коров , чего думать - мы исключаем все числа, содержащие 5, 6, 7, 8 . Сразу можете прикинуть, сколько отнимется из 10000. Не стоит пугаться множества из 10000 элементов. За 5-6 ходов останется всего несколько чисел.

Начнем со структур данных. Код на паскале:

Const Pmax=10000; Type Post=string; Var A:array of Post; //множество B:array of boolean; // массив флажков, 1 - значит подходит, 0 - исключено

Инициализация:

T:=1; for i:=0 to 9 do for j:=0 to 9 do for k:=0 to 9 do for l:=0 to 9 do begin a[t]:=inttostr(i)+inttostr(j)+inttostr(k)+inttostr(l); // формируем множество inc(t); end; for i:=1 to pmax do b[i]:=true; // по умолчанию все числа подходят

Функция, реализующая анализ элемента множества по значениям переменных (bk,kr - быки и коровы)

Function pr(a,b:post;bk,kr:integer):boolean; //b - наш ход, a- элемент "тестируемого" множества var i,x:integer; begin x:=0; for i:=1 to 4 do // проверка по быкам if a[i]=b[i] then inc(x); if x<>bk then begin pr:=false; exit; end; x:=0; for i:=1 to 4 do // проверка по коровам if (a[i]<>b[i]) and (pos(b[i],a)<>0) then inc(x); if x

Таким образом после каждого нашего хода запускаем решето

For i:=1 to Pmax do if b[i] and not pr(a[i],hod,bk,kr) then b[i]:=false;

В заключение можно сказать, что алгоритм затратен к памяти и по сравнению со стандартными алгоритмами будет думать «дольше», но насколько же он проще и вполне оптимизируется.
Ну вот и все, совсем не сложно. Первая моя статья, судить строго.

Эта простая на первый взгляд игрушка, однако заставит Вас напрячь то серое вещество, которое by default должно находиться внутри черепной коробки каждого человека.

Она несомненно является шедевром времяубивания на лекциях, уроках, а теперь вот и в Интеренете.

Правила игры очень просты.
1. Компьютер загадывает четырёхзначное число. Цифры в числе не повторяются.
2. Вы пытаетесь это число угадать, называя наугад (и не очень) свои варианты загаданного числа.
3. На каждую вашу попытку, компьютер Вам сообщает кое-что про соответствие между цифрами загаданного числа и вашего варианта, а именно - количество "быков" и "коров":


    "Быки" - это те цифры вашего числа, расположение которых поразрядно совпадает с цифрами загаданного числа;
    "Коровы" - это те цифры вашего числа, которые присутствуют в загаданном числе, но находятся в другом месте, (в другом разряде, на другой позиции).

Рассмотрим пример:


    Загадано число "2308" .
    В числе присутствуют цифры - 2, 3, 0, 8;
    На ваши попытки его угадать, компьютер будет отвечать так:
    1. "1234" - 0б, 2к ("коровы" цифры 2 и 3, так как они присутствуют в загаданном числе, но находятся не на своих местах);
    2. "5678" - 1б, 0к ("бык" это цифра 8, находится на 4-й позиции, т.е. на месте);
    3. "2380" - 2б, 2к (2,3 - быки, 8,0 - коровы, 2 и 3 на местах, 8,0 не на местах).
    и т.д.

В среднем, пытливому уму требуется от 6 до 8 попыток, чтобы отгадать любое 4-х значное число.

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

Будут изучены все ситуации, когда ответ противника на наш первый ход - для определенности число 1234 - совпадет с одним из первых пяти в таблице на рис. 2 (предыдущая страничка). При ответе 4б партия продолжается всего один ход, а для каждого из четырех других случаев мы укажем способ игры, гарантирующий отгадывание задуманного числа за наименьшее количество ходов.

Другими словами, за столько ходов мы точно отгадаем число противника, каким бы оно ни было, а при меньшем количестве нам всегда может не повезти - шифр не будет раскрыт.

Партия 1.

На первый ход 1234 противник ответил 2б 2к. Как выиграть? Какое наименьшее количество ходов гарантирует отгадывание задуманного числа?

Легко проверить, что только шесть задуманных чисел в ответ на первый ход 1234 могут дать ответ 2б 2к (табл. 3, первый столбец), и при любом втором ходе по крайней мере три из них дадут одинаковый ответ.

Вторым ходом сыграем 1356 (вместо цифр 5 и 6 можно было бы взять и другие, отличные от 1, 2, 3, 4). Все возможные ответы находятся во втором столбце таблицы. Ответ 2б сразу определяет задуманное число - 1324 (у других чисел иной ответ), ответ 1 б 1 к оставляет два варианта, а ответ 2к - три.

Третий ход 3256 (с учетом второго) вносит полную ясность - все пять чисел-кандидатов дают разную пару ответов. Прочерк в табл. 3 (и всех последующих таблицах) означает, что при соответствующем ходе «реакция» на него данного числа нас уже не интересует. Таким образом, на четвертом ходу гарантирован ответ 4б и партия длится не более четырех ходов.

Типичная и совершенно не очевидная ошибка, которую допускают многие, кто решает эту задачу, состоит в использовании для игры чисел, содержащих только цифры 1, 2, 3, 4. Логика здесь простая - раз все цифры известны, то зачем подключать новые? Однако при таком подходе задуманное число с гарантией определяется на пятом ходу (ответ 4 б).

Партия 2.

Тот же вопрос, что и в первой партии, но ответ на первый ход 1б Зк. На первый ход 1234 восемь чисел могут дать ответ 16 Зк (табл. 4).

При любом втором ходе хотя бы одна четверка чисел дает один и тот же ответ, и для выяснения ситуации понадобятся еще два хода. При втором ходе 1256 числа разделяются на две группы; для чисел первой группы (ответ1б 1к) сделаем третий ход, а для чисел второй группы (ответ 2к) ход 2564 . После этого остаются две пары чисел в каждой гpynne, требующие еще одного хода, и четвертый ход 1564 полностью проясняет картину.

Таким образом, вторая партия длится не более пяти ходов.

Рассмотрим, как выиграть в «быки и коровы» , анализируя еще две партии.

Партия 3.

Тот же вопрос, что и в предыдущих двух партиях, но при ответе на первый ход 4к.

В ответ на первый ход 1234 девять чисел могут дать ответ 4к (табл. 5). Второй ход 3102 расшифровывает два числа, а остальные семь делит на две группы, в одной из которых решает ход 4153 , а в другой - 2456 . Четвертый ход завершит партию (будет получен ответ 4б).

Партия 4.

Тот же вопрос, что и в предыдущих трех партиях, но при ответе на первый ход 3б.

Ответ 3б на первый ход 1234 дают 24 числа. Действительно, три цифры можно зафиксировать на своих местах четырьмя способами, а для четвертой имеется шесть возможностей: 0, 5, 6, 7, 8, 9, то есть всего 4X6 = 24 варианта. Любопытно, что найти задуманное число среди 24 чисел в данной партии удается за столько же ходов, за сколько восемь чисел во второй партии.

Рассмотрим табл. 6 а. В ее первых четырех строках а обозначает любую из цифр 8, 9, 0. Таким образом, здесь представлены все 24 возможности. Сделаем второй ход 1567. Ответ 0б 0к оставляет выбор из трех неразгаданных чисел, для которых годится третий ход 8934 (табл. 6 б). При ответе 2б можно сыграть 1506 (табл. 6 в), а при ответе 1к - 5634 (табл. 6 г).



Для девяти чисел с ответом 1б в табл. 6 а составим табл. 6 д (вновь а может принимать одно из трех значений - 8, 9, 0). Третий ход 3564 разделяет их на три равные группы, четвертым ходом числа идентифицируются, и пятый ход завершит игру (ответ 4б).

У нас осталось еще шесть чисел, расположенных в нижних строках табл. 6 а, выпишем их отдельно (табл. бе). И с этой шестеркой удается разобраться за два дополнительных хода. Итак, вновь партия длится не более пяти ходов.

Результаты всех рассмотренных партий собраны в табл. 7. Строгое доказательство того, что в каждом случае меньшим количеством ходов не обойтись, мы опускаем.

Эта инструкция, как выиграть и разобранные примеры показывают, что искусная игра в «быки и коровы» требует тонкого математического расчета.