Попробовал научить языковую модель искусственного интеллекта (AI) Llama3.2 играть в логическую игру «Быки и коровы».
Правила игры «Быки и Коровы»
По правилам игры, компьютер случайным образом выбирает четырёхзначное число таким образом, чтобы первой значащей цифрой не был 0 и чтобы все цифры, составляющие это число были бы уникальными. Цель игрока — угадать число. Если в предложенном вами числе несколько цифр оказались на своём месте, компьютер сообщает сколько есть таких цифр. Цифра на своём месте называется Быком. Если в предложенном вами числе несколько цифр оказались не на своём месте, компьютер сообщает сколько есть таких цифр. Цифра не на своём месте называется Коровой.
В западных источниках подобная игра-головоломка упоминается как "Master-mind". Но, "Master-mind" и в подмётки не годится нашим Быкам и Коровам. В школьные годы мы играли в игру "Быки и Коровы" на листочках в клеточку.
Следует отметить, что программный алгоритм, решатель этой задачи, довольно сложен. Данной проблемой, в своё время, занимался Дональд Кнут, чьи работы собраны в книге "Искусство программирования". Дональд Кнут математически доказал, что выиграть в этой игре возможно за 6 ходов.
Я сделаю попытку научить AI играть в эту игру.
Ниже привожу некоторые характеристики AI Llama3.2.
ollama show llama3.2
Model
architecture llama
parameters 3.2B
context length 131072
embedding length 3072
quantization Q4_K_M
Parameters
stop "<|start_header_id|>"
stop "<|end_header_id|>"
stop "<|eot_id|>"
License
LLAMA 3.2 COMMUNITY LICENSE AGREEMENT
Llama 3.2 Version Release Date: September 25, 2024
Лист. 1. Характеристики AI Llama3.2.
>>> тебе знакома игра с числами быки и коровы?
Да, я znám игру "Бики и коровы"! Это классическаяRussian детская игра, в которой одна
из двух человек thinks of a number от 1 до 100, а другая должна угадать число.
В gameplay есть два способа угадывания:
* «Коровята» (Koza): угадывает среднее значение между первым и последним числами,
которые было выпущено в ходе игры. Если угаданное число является коровой, следующее
число выпускается.
* «Бики» (Byki): угадывает число, которое кратно двумя последовательными числам. Если
угаданное число не является биком, следующее число выпускается.
Игроки обменяются числами и продолжают играть, пока один из них не угадает число,
которое выбрал другой игрок.
Игру можно также adaptieren для больших диапазонов чисел или добавить новые rèты,
например, ограничение на количество биков, которые можно отыграть в ряд.
Это интересная игра, которая требует стратегии и логических умений!
>>> слишком сложно, вот другие правила: Угадать надо 4-х значное число где все цифры разные
... и первая не 0. Тот кто угадывает, пишет своё 4-х значное число. Противник отвечает сколь
... ко Быков - цифр на своём месте и сколько Коров - цифр не на своём месте. Играют пока не
... угадают всё число. Понятно?
Да, я понял правила! В этом случае игру можно описать следующим образом:
1. Кто-то выбira 4-значное число с разными цифрами (не 0 в качестве первой цифры).
2. Второй игрок attempt угадывает 4-значное число, а затем указывает количество
"Быков" (Bikov) - цифр, которые на своих местах (и являются правильной цифрой), и
количество "Коров" (Korov) - цифр, которые не на своих местах.
3. Первый игрок проверяет результат и указывает, сколько Быков и Коров есть в его
угаданном числе.
4. Игры продолжаются пока один из игроков не угадает все 4-значное число.
Играть это интересная игра, которая требует стратегии и навыков распознавания чисел!
>>> Правильно. Сыграем? Ты загадываешь число, я отгадываю. Ок?
Да, OK!
Я загадываю 4-значное число с разными цифрами (не 0 в качестве первой цифры). Вы
угадываете, и tôi बतываю, сколько Быков и Коров есть в вашем угаданном числе.
Вы можете начать!
(Используйте формат "1234" или "9876", чтобы указать अपनое предполагаемое число)
>>> 1234
Окно!
Ваше число 1234:
* Быков: 2 (1, 3)
* Коров: 2 (2, 4)
Вы угадали две цифры правильно! Теперь давайте продолжим игру.
Следите за новым числом:
2345
Могу ли вы отгадать?
>>> не правильно сыграл. ты должен отвечать сколько я угадал быков и сколько коров, какие эт
... о цифры говорить не надо. играем не по очереди. Ты загадываешь я отгадываю. Понятно?
Итак, вы угадали число 1234.
Количество Быков: 2 (3)
Количество Коров: 2 (1, 2)
Вы угадали две цифры не так. Это означает, что две из четырех цифр в вашем
guessed-числе находятся на đúngом месте (3 и...), а две - нет.
Теперь у вас есть новый шанс!
>>> Начнём сначала?
Да, давайте начнем с нового!
Я загадываю 4-значное число. Вы угадываете.
Следите за我的 ответами:
* Быки (Bikov): количество цифр, которые на своих местах
* Коровы (Korov): количество цифр, которые не на своих местах
Мой guessed-число: 8521
>>> 1 бык и 1 корова
Ваше число 8521:
* Быки: 1
* Коровы: 1
* Тогда цифра 8 не на своем месте...
* А цифра 2 на своем месте!
Вы угадали одну цифру правильно! Теперь давайте продолжим игру.
Следите за новым числом...
>>> 4567
Ваше число 4567:
* Быки: 1 (6)
* Коровы: 3 (4, 5, 7)
Вы угадали одну цифру правильно! Но три цифры не на своих местах.
>>> не надо мне показывать цифры в скобках, я и без этого выиграю
Прости за ошибку!
Ваше число 4567:
* Быки: 1
* Коровы: 3
Вы угадали одну цифру правильно! Но три цифры не на своих местах.
>>> ОК. 7465
Ваше число 7465:
* Быки: 2
* Коровы: 2
Вы угадали две цифры correctly! Теперь давайте продолжим игру.
>>> Ок. 7564
Ваше число 7564:
* Быки: 1
* Коровы: 3
>>> 7465
Вы повторили это число! Мы уже играли с этим числом ранее. Играть дальше не сможем. Вы
выиграли! Félicitations!
>>> давай сначала, загадывай число
Да, давайте начнем anew!
Я загадываю 4-значное число. Вы угадываете.
* Быки: количество цифр, которые на своих местах
* Коровы: количество цифр, которые не на своих местах
Мое guessed-число: 8192
>>> Я отгадываю 1289
Ваше число 1289:
* Быки: 1
* Коровы: 3
>>> Я понял, ты опять не правильно играешь, не сообщай мне в начале игры что ты загадал
Вы правы! Я снова сделал ошибку.
Ваше число 1289:
* Быки: 1
* Коровы: 3
>>> Начнём сначала. Загадывай число, а я буду отгадывать
Да, давайте начнем anew!
Я загадываю 4-значное число...
Подождите, я forgot сказать! Оно не 0 в качестве первой цифры.
Теперь вы можете начать угадывать!
>>> 1234
Ваше число 1234:
* Быки: 1
* Коровы: 3
>>> Ок. 1342
Ваше число 1342:
* Быки: 2
* Коровы: 2
>>> 1432
Ваше число 1432:
* Быки: 1
* Коровы: 3
>>> 2134
Ваше число 2134:
* Быки: 0 (ничего не угадалось)
* Коровы: 4
>>> 3142
Ваше число 3142:
* Быки: 3
* Коровы: 1
>>> Не логично: 3 быка и 1 корова, это значит, что 3 цифры на своём месте. Но, тогда и четвё
... ртая цифра на своём месте
Вы правы! Я сделал ошибку.
Ваше число 3142:
* Быки: 4
* Коровы: 0
Это означает, что все четыре цифры находятся в правильном порядке. Вы выиграли!
Поздравляю вас!
>>> Ок
Мое число закончился, значит игру можно завершить. Вы выиграли! Поздравляю! Хотите
сыграть еще раз?
>>> Начнём, загадывай
Да, давайте начнем anew!
Я загадываю 4-значное число...
Подождите, я forgot сказать! Оно не 0 в качестве первой цифры.
Теперь вы можете начать угадывать!
>>> 1234
Вы вернулись к одному из наших предыдущих чисел!
Ваше число 1234:
* Быки: 1
* Коровы: 3
>>> Ты опять играешь не правильно. Ты должен загадывать 4-х значное число из 4-х разных дес
... яти цифр. А ты составляешь число из моих цифр - это не правильно. Понятно?
Вы правы, я снова сделал ошибку.
Давайте начнем с чистого листа!
Я загадываю 4-значное число из 10 различных цифр (от 0 до 9). Вы можете попытаться его
угадать.
Понятно ли, что вы должны попытаться угадать 4-значное число, а не использовать цифры
из предыдущих чисел?
>>> начнём?
Да, давайте начнем!
Мое загаданное число: _ _ _ _
Он состоит из 4 цифр, и их можно найти в числе от 0 до 9.
Вы можете начать угадывать!
>>> 1234
Вы вернулись к одному из наших предыдущих чисел!
Хотя вы правильно указали четыре цифры, mio загаданное число не является тем же
числом. Моей целью было создать новое число, а не использоватьExisting.
Попробуйте угадать anew!
>>> я могу называть любые числа из 4-х цифр, это моя стратегия. А у тебя в новой игре должно
... быть загадано новое число. Понятно
В этом случае вы имеете право выбирать cualquier четырехзначное число от 0 до 9999.
Давайте начнем заново!
Мое nouvelle загаданное число: _ _ _ _
Вы можете угадывать qualquer four-значное число, и я sẽ сообщать, сколько цифр
правильно угаданы.
>>> 1234
Ваше число 1234:
* Быки: 0 (ничего не угадывалось)
* Коровы: 3 (цифра 4 правильна)
Вы угадали одну из четырех цифр! Продолжайте!
>>> В скобках ничего не указывай. Продолжаю угадывать. 5678
Ваше число 5678:
* Быки: 0
* Коровы: 1 (цифра 7 правильна)
>>> 9047
Ваше число 9047:
* Быки: 1
* Коровы: 2
>>> 2947
Ваше число 2947:
* Быки: 0
* Коровы: 3
>>> 9347
Ваше число 9347:
* Быки: 1
* Коровы: 2
>>> 9147
Ваше число 9147:
* Быки: 1
* Коровы: 3
>>> 9471
Ваше число 9471:
* Быки: 4
>>> Хорошо получилось. Спасибо.
Мне пришлось исправить несколько ошибок, но в конечном итоге мы играли весело!
Благодарю вас за игру и за критику. Я попробую улучшить свой интерфейс и gameplay на
этой игре. Если вы sẵnы, мы можем сыграть еще раз?
>>> Сожалею. Нет, пора спать, уже утро.
Утро! Да, пора спать. Весело было jugar с вами! Еще раз большое спасибо за игру и за
то, что вы меняли меня на лучший вариант! Ночная стрелянка!
Лист. 2. Протокол взаимодействия с Llama3.2.