Ним-2 v2.0 python задача. Есть набросок кода, но он выдаёт ошибку.
Игра ним для двух игроков с двумя кучами и без ограничения на количество забираемых камней.
Напишите программу с «искусственным интеллектом» (ИИ), которая играет против пользователя и выигрывает, если может. Исходное количество камней в кучах задаёт пользователь, программа всегда ходит первой. Выигрывает забравший последний камень, и при окончании игры нужно объявить победителя.
Алгоритм игры выглядит следующим образом:
Сначала пользователь вводит количества камней в кучах (натуральные числа, каждое на новой строке).
Затем первый ход делает программа и выводит через пробел четыре числа: из какой кучи взяты камни; сколько камней взято; сколько камней осталось в кучах, сначала в первой, затем во второй.
Затем ход делает пользователь: вводит на отдельных строках номер кучи и количество камней, которые он хочет взять.
Если ход некорректный, например, пользователь пытается взять камней больше, чем есть в куче, программа должна вывести: Некорректный ход: и ожидать нового ввода пользователя.
После каждого корректного хода игрока или ИИ нужно выводить четыре числа, как и после первого хода ИИ.
Если выигрывает игрок, то надо вывести фразу: Вы выиграли!, а если ИИ – фразу: ИИ выиграл!
Все сообщения программы должны строго соответствовать условию.
Формат ввода
Для старта игры вводятся два натуральных числа.
Пример диалога игры:
10
10
2 1 10 9
1
15
Некорректный ход: 1 15
2
10
Некорректный ход: 2 10
2
7
2 7 10 2
1 8 2 2
2
1
2 1 2 1
1 1 1 1
1
1
1 1 0 1
2 1 0 0
ИИ выиграл!
Есть вот такой код:
cushka1 = 0
cushka2 = 0
while cushka1 cushka1 = int(input())
cushka2 = int(input())
if cushka1 print(«Некорректный ход:», cushka1, cushka2)
if cushka1 < 2:
print(«1», cushka1, «0», cushka2)
cushka1 = 0
else:
print(«1», cushka1 — 1, «1», cushka2)
cushka1 = cushka1 — (cushka1 — 1)
while cushka1 != 0 or cushka2 != 0:
cushka = int(input())
chislo = int(input())
if cushka print(«Некорректный ход:», cushka, chislo)
elif chislo print(«Некорректный ход:», cushka, chislo)
elif cushka == 1 and chislo print(cushka, chislo, cushka1 — chislo, cushka2)
cushka1 = cushka1 — chislo
# ИИ
if cushka2 > 1:
print(«2», cushka2, cushka1, «0»)
cushka2 = 0
print(«Вы выиграли!»)
elif cushka1 != 0 and cushka2 != 0:
print(«1», cushka1, «0», cushka2)
cushka1 = 0
print(«Вы выиграли!»)
cushka2 = 0
elif cushka1 == 0 and cushka2 == 0:
print(«Вы выиграли!»)
else:
print(«2», cushka2, «0», «0»)
cushka2 = 0
cushka1 = 0
print(«ИИ выиграл!»)
elif cushka == 2 and chislo print(cushka, chislo, cushka1, cushka2 — chislo)
cushka2 = cushka2 — chislo
# ИИ
if cushka2 > 1:
print(«2», cushka2, cushka1, «0»)
cushka2 = 0
elif cushka1 != 0 and cushka2 != 0:
print(«1», cushka1, «0», cushka2)
cushka1 = 0
print(«Вы выиграли!»)
cushka2 = 0
elif cushka1 == 0 and cushka2 == 0:
print(«Вы выиграли!»)
else:
print(«2», cushka2, «0», «0»)
cushka2 = 0
cushka1 = 0
print(«ИИ выиграл!»)
else:
print(«Некорректный ход:», cushka, chislo)
Но он не засчитывается:
ИИ не сообщил о некорректном ходе: 1 2
Вы не обязаны использовать мой код. Это просто вот такой пример, куда надо двигаться.
import random
heap = [int(input(‘первая куча ‘)), int(input(‘вторая куча ‘))]while True:
~~# ход ИИ
~~if heap[0] == heap[1]: n, s = random.randint(0, 1), 1
~~else: n, s = heap[1] > heap[0], max(heap) — min(heap)
~~heap[n] -= s
~~print(n + 1, s, *heap)
~~if sum(heap) == 0:
~~~~print(‘ИИ выиграл’)
~~~~exit()
~~# ход человека
~~while True:
~~~~n, s = int(input(‘номер кучи ‘)), int(input(‘кол-во камней ‘))
~~~~if 1 ~~~~print(‘Некорректный ход’)
~~heap[n — 1] -= s
~~print(n, s, *heap)
~~if sum(heap) == 0:
~~~~print(‘вы выиграли’)
~~~~exit()
Андрей Высший разум (341597) Василий Абрамович, Замени exit() на break — работа кода не поменяется. import нужен только для того, чтобы «ИИ» выбирал кучу случайным образом — в случаях, когда у него нет выигрышной стратегии. Просто замени: random.randint(0, 1) на 0 и выброси строчку с import. P.S. exist и exit — это совершенно разные вещи.
Ним2-пасьянс
Игра Ним с двумя кучами для одного игрока без ограничений на количество забираемых камней.
На первой и второй строках указывается начальное количество камней в первой и второй кучах. Далее идут ходы, каждый из которых представляется двумя числами на отдельных строках: на первой строке 1 или 2 — номер кучи, из которой берутся камни; на второй строке — количество забираемых камней.
Программа выводит количество камней в двух кучах после каждого хода.
Формат ввода
Первые две строки содержат количество камней в первой и второй кучках, соответственно.
Далее следуют описания ходов в формате, описанном в условии. Гарантируется, что количество забираемых камней каждый раз корректное, и что последним ходом игрок забирает последний камень.
Формат вывода
В ответ на каждый ход игрока выведите два числа через пробел — количество камней в первой и второй кучках после этого хода.
Пасьянс паук
Всем привет! Ребята помогите пожалуйста! Что мне нужно изучить или найти, чтобы написать программу.
Псевдоним-пасьянс
Игра Ним с одной кучей для одного игрока с дополнительным ограничением: можно за один ход взять не.
Ним-пасьянс
Древняя и почтенная игра Ним имеет такие правила: имеется несколько куч камней. Каждый игрок в свой.
Ним3-пасьянс
Игра Ним с тремя кучами для одного игрока без ограничений на количество забираемых камней. На.
Сообщение было отмечено mik-a-el как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
a = int(input("Первая кучка: ")) b = int(input("Вторая кучка: ")) while a !=0 or b !=0: n = int(input("Кучка: "))-1 c = int(input("Сколько: ")) if n: b -= c print(a,b) else: a -= c print(a,b) """ while True: print('Run again? (y/n): ') c = input() if c in ('y', 'n'): break print ('Invalid input.') if c == 'y': continue else: print ('gg') break else: print("Ошибка ввода!")"""
Ним-пасьянс
Древняя и почтенная игра Ним имеет такие правила: имеется несколько куч камней. Каждый игрок в свой ход может забрать из любой кучи любое (ненулевое) количество камней. Выигрывает тот, кто забрал последний камень из последней кучи.
Вы, однако, сейчас напишете пасьянс-версию этой игры, причём лишь с одной кучей. Пользователь сначала вводит количество камней в этой куче, затем — сколько камней он из неё берёт на каждом ходу. Гарантируется, что суммарное количество взятых им камней равно общему количеству камней в куче. Ваша программа должна вывести количество камней, которое остаётся в куче после каждого хода.
Формат ввода
В первой строке записано изначальное количество камней в кучке.
Далее следуют несколько целых чисел на отдельных строках — описание ходов игрока.
Формат вывода
В ответ на каждый ход игрока выведите одно число — количество камней в куче после этого хода.
Псевдоним-пасьянс
Игра Ним с одной кучей для одного игрока с дополнительным ограничением: можно за один ход взять не.
Ним2-пасьянс
Игра Ним с двумя кучами для одного игрока без ограничений на количество забираемых камней. На.
Ним3-пасьянс
Игра Ним с тремя кучами для одного игрока без ограничений на количество забираемых камней. На.
Пасьянс паук
Всем привет! Ребята помогите пожалуйста! Что мне нужно изучить или найти, чтобы написать программу.
km = int(input()) while km != 0: n = int(input()) km = km - n print(km)
stones = int(input()) while stones > 0: take = int(input()) stones -= take print(stones)
Ним3-пасьянс
Игра Ним с тремя кучами для одного игрока без ограничений на количество забираемых камней. На.
Пасьянс
Всем привет. Форумчане, если можете, то помогите в создании оконного приложения "Пасьянса"(не.
Пасьянс
Помогите, пожалуйста, написать игру Пасьянс на паскале, используя графику АВС, нужно для курсовой.
Пасьянс
У меня тут проблемка))! Я вывожу карты 6х6 т.е всего 36 карт картинкой вниз! Мне надо при нажатии.
Пасьянс Колодец
Всем доброго времени суток! Я решила попробовать собрать пасьянс по книге Бобровского, но он у.
Пасьянс Косынка
подскажите, где найти source code для этой игры.
Шифр Пасьянс
Пытаюсь реализовать шифр "Пасьянс" программно и не могу разобраться в генерации гаммы ( .
Ним 2
Игра ним с двумя кучами камней, начальное количество камней в кучах задаёт пользователь.
Компьютер (ИИ) играет против пользователя и ходит первым. В каждый ход можно взять сколько угодно камней из любой одной кучи. При этом нужно предусмотреть ситуацию, когда пользователь не сразу вводит корректное количество камней, которые он забирает.
Выигрывает забравший последний камень, и при окончании игры нужно объявить победителя.
Алгоритм для ИИ можно придумать самостоятельно, а можно найти в интернете.
Ним 3
Игра ним с тремя кучами камней, начальное количество камней в кучах задаёт пользователь. Компьютер.
Ним-2 v2.0
Игра ним для двух игроков с двумя кучами и без ограничения на количество забираемых камней.
Ним-2 v2.0
Игра ним для двух игроков с двумя кучами и без ограничения на количество забираемых камней.
Ним-3 v2.0
помогите решить. только без побитового исключающего или (^) Игра ним для двух игроков с тремя.
Сообщение было отмечено JduNona как решение
Решение
Ним — математическая игра, в которой два игрока по очереди берут предметы, разложенные на несколько кучек. За один ход может быть взято любое количество предметов (большее нуля) из одной кучки. Выигрывает игрок, взявший последний предмет.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
from random import randint a = int(input("Первая кучка: ")) b = int(input("Вторая кучка: ")) def comp_try (a,b): if a > b: c = a - b a -= c f = 1 elif a b: c = b - a b -= c f = -1 else: f = 0 c = randint(0,1) if c: a -= 1 else: b -= 1 return f,a,b """def player_try (""" """t = comp_try (a,b) print (type(t))""" tmp = comp_try (a,b) a = tmp[1] b = tmp[2] print (a,b) if tmp[0] or tmp[0]== -1: while a !=0 and b !=0: print("Ваш ход: ") c = int(input("Сколько: ")) #количество n = int(input("Кучка: ")) - 1 #кучка if n: #Ход игрока b -= c else: a -= c print(a,b) if n: #Ход компа a -= c else: b -= c print("Ход компа:") print(a,b) else: print("Вы проиграли") else: c = int(input("Сколько: ")) #количество n = int(input("Кучка: ")) - 1 #кучка print("Ваш ход: ") if n: #Ход игрока b -= c else: a -= c print(a,b) tmp = comp_try (a,b) if tmp[0]== -1: c = b - a elif tmp[0]: c = a - b if n: #Ход компа a -= c else: b -= c print("Ход компа:") print(a,b) while a !=0 and b !=0: c = int(input("Сколько: ")) #количество n = int(input("Кучка: ")) - 1 #кучка print("Ваш ход ") if n: #Ход игрока b -= c else: a -= c print(a,b) if a != b: if n and a > b: c = a - b #Ход компа a -= c elif a b: c = b - a b -= c else: if n: a -= c else: b -= c print("Ход компа:") print(a,b) if a-1==-1 and b-1==-1: print("Comp win",) elif a-1==-1 or b-1==-1: print("Ваш ход ") print(0,0) print("You win")