Вопрос задан 02.11.2023 в 10:57. Предмет Информатика. Спрашивает Рудаков Валёк.

Игра ним для двух игроков с одной кучей и ограничением на количество забираемых камней: за один ход

можно взять не больше трёх камней. Напишите программу с «искусственным интеллектом» (ИИ), которая играет против пользователя и выигрывает, если может. Исходное количество камней в куче задаёт пользователь, программа всегда ходит первой. После каждого хода пользователя и программы необходимо сообщать, сколько камней взято и сколько осталось. В конце необходимо сообщить, кто выиграл. Пользователь в свой ход вводит количество камней до тех пор, пока не введёт разрешённое число — от одного до трёх (или меньше — если камней осталось меньше). При вводе некорректного значения необходимо вывести фразу: Некорректный ход: и заново потребовать вводить данные. После хода игрока или ИИ необходимо вывести два числа: сколько камней было взято и сколько камней осталось в куче. Если выигрывает игрок, то надо вывести фразу: Вы выиграли!, а если ИИ - фразу: ИИ выиграл! Все сообщения программы должны строго соответствовать условию.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Орленко Катюша.

Ответ (на Python):

n = int(input())

while n > 0:

   n1 = n % 4

   if n1 == 0:

       n1 = 2

   n -= n1

   print(n1, n)

   if n == 0:

       print('ИИ выиграл!')

   else:

       n1 = int(input())

       while not (1 <= n1 <= 3 and n1 <= n):

           print('Некорректный ход:', n1)

           n1 = int(input())

       n -= n1

       print(n1, n)

       if n == 0:

           print('Вы выиграли!')

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи можно использовать стратегию "остаток". Это стратегия, при которой игрок всегда пытается оставить у противника остаток от деления количества камней на 4. Если остаток равен 0, 1 или 2, игрок берет 1, 2 или 3 камня соответственно. Если остаток равен 3, игрок берет все камни. Это гарантирует, что игрок всегда будет выигрывать, если количество камней в куче больше 4.

Вот пример программы на Python, которая реализует эту стратегию:

```python def ai_move(stones): return (stones - 4) % 4

def game(stones): print("Игра начинается. У вас есть", stones, "камней.") while stones > 0: ai_stones = ai_move(stones) stones -= ai_stones print("Я забрал", ai_stones, "камней. У вас осталось", stones, "камней.") if stones == 0: print("ИИ выиграл!") break try: user_stones = int(input("Ваш ход. Сколько камней вы хотите забрать? ")) if user_stones < 1 or user_stones > 3 or user_stones > stones: raise ValueError except ValueError: print("Некорректный ход. Попробуйте снова.") continue stones -= user_stones print("Вы забрали", user_stones, "камней. У вас осталось", stones, "камней.") if stones == 0: print("Вы выиграли!") break return ```

В этой программе функция `ai_move` определяет, сколько камней должен забрать ИИ. Функция `game` управляет ходом игры, делая ходы ИИ и пользователя, пока не закончатся камни. Если пользователь вводит некорректное число, программа выводит сообщение об ошибке и просит его ввести число снова.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос