Write a program with an artificial intelligence (AI) that plays against the user and wins if it can. The game is called

  • 61
Write a program with an "artificial intelligence" (AI) that plays against the user and wins if it can. The game is called Nim and is played by two players with one pile of stones. The players are restricted to taking no more than three stones in one turn. The user defines the initial number of stones in the pile, and the program always plays first. After each turn by the user and the program, it is necessary to report how many stones were taken and how many remain. At the end, it is necessary to report who won. The user enters the number of stones in their turn until they enter an allowed number - between one and three.
Максимовна_9619
47
Вам потребуется написать программу на языке Python, которая будет воспроизводить игру "Nim" против пользователя и стремиться выиграть. Вот подробное пошаговое решение:

1. Сначала вам нужно получить от пользователя количество камней в куче. Это можно сделать с помощью функции `input()`, которая позволяет пользователю вводить данные. Введите следующий код:
python
количество_камней = int(input("Введите количество камней в куче: "))


2. Теперь можно начать основной цикл игры. Он будет выполняться до тех пор, пока в куче остаются камни. Введите следующий код:
python
while количество_камней > 0:


3. Внутри цикла нужно запросить у пользователя, сколько камней он хочет взять из кучи. Пользователь может взять от 1 до 3 камней. Используйте функцию `input()` для этого. Также нужно учесть случай, когда пользователь вводит число больше оставшихся камней в куче. Введите следующий код:
python
ход_пользователя = int(input("Сколько камней вы хотите взять? (от 1 до 3): "))
if ход_пользователя < 1 or ход_пользователя > 3 or ход_пользователя > количество_камней:
print("Некорректный ход! Попробуйте снова.")
continue


4. После того, как пользователь сделал свой ход, нужно вычесть это количество камней из общего количества. Введите следующий код:
python
количество_камней -= ход_пользователя
print(f"Вы взяли {ход_пользователя} камней.")


5. Проверим, остались ли еще камни в куче после хода пользователя. Если нет, то пользователь выиграл, и игра завершается. Введите следующий код:
python
if количество_камней == 0:
print("Вы выиграли!")
break


6. Теперь программа должна сделать свой ход, используя стратегию, чтобы победить пользователя. Это можно сделать, используя математический алгоритм. Если количество камней в куче кратно 4 (количество_камней % 4 == 0), программа может взять один камень, чтобы обеспечить свою победу. В противном случае, программа должна взять такое количество камней, чтобы после своего хода в куче оставалось количество камней, кратное 4. Введите следующий код:
python
if количество_камней % 4 == 0:
ход_программы = 1
else:
ход_программы = количество_камней % 4

количество_камней -= ход_программы
print(f"Программа взяла {ход_программы} камней.")


7. После хода программы нужно снова проверить, остались ли еще камни в куче. Если нет, то программа выиграла, и игра завершается. Введите следующий код:
python
if количество_камней == 0:
print("Программа выиграла!")
break


8. Если куча все еще не пуста, игра продолжается, и переходим к следующей итерации цикла.

Итак, вот полный код программы:

python
количество_камней = int(input("Введите количество камней в куче: "))

while количество_камней > 0:
ход_пользователя = int(input("Сколько камней вы хотите взять? (от 1 до 3): "))
if ход_пользователя < 1 or ход_пользователя > 3 or ход_пользователя > количество_камней:
print("Некорректный ход! Попробуйте снова.")
continue

количество_камней -= ход_пользователя
print(f"Вы взяли {ход_пользователя} камней.")

if количество_камней == 0:
print("Вы выиграли!")
break

if количество_камней % 4 == 0:
ход_программы = 1
else:
ход_программы = количество_камней % 4

количество_камней -= ход_программы
print(f"Программа взяла {ход_программы} камней.")

if количество_камней == 0:
print("Программа выиграла!")
break


Теперь вы можете запустить программу и наслаждаться игрой против "искусственного интеллекта".