Здравствуйте! Помогите найти ошибку в коде, пожалуйста.
import sys
def read_input():
n = int(input())
candies = list(map(int, input().split()))
return n, candies
def print_move(vase, count):
print(vase + 1, count)
sys.stdout.flush()
def find_best_move(candies):
for i in range(len(candies)):
if candies >= 1:
return i, 1
if candies >= 2:
return i, 2
return -1, -1
def main():
n, candies = read_input()
while True:
vase, count = find_best_move(candies)
if vase == -1:
print(-1)
sys.stdout.flush()
break
print_move(vase, count)
candies[vase] -= count
jury_move = input().strip()
if jury_move == "-1":
break
jury_vase, jury_count = map(int, jury_move.split())
candies[jury_vase - 1] -= jury_count
if all(c == 0 for c in candies):
break
if __name__ == "__main__":
main()
Требуется играть против программы жюри в описанную игру, делая ходы за первого игрока. Сначала следует прочитать начальные данные об игре. Чтобы сделать ход, следует вывести на отдельной строке этот ход. Если возможных ходов нет, или участник хочет сдаться заранее, следует вместо хода вывести число -1. После вывода необходимо очистить буфер вывода: sys.stdout.flush () в Python.
Далее, если игра окончена, программа должна завершить работу. В противном случае следует прочитать ход, сделанный программой жюри, и делать следующий ход. Жюри выводит ходы по тем же правилам, что и программа участника. В частности, одно число -1 в строке означает победу программы участника. Решение считается правильным, если оно выигрывает во всех тестах, в которых можно выиграть при правильной игре, а при неизбежном проигрыше рано или поздно выводит -1.
Есть n вазочек с конфетами: в первой вазочке количество конфет равно a1, во второй — a2, . . ., в n-й — an. За один ход можно взять из одной любой вазочки 1 или 2 конфеты. В первой строке задано одно целое число n (1 ≤ n ≤ 100). Во второй строке заданы числа a1, a2, . . ., an, разделённые пробелами (1 ≤ ai ≤ 100).
Ход записывается двумя числами — номером вазочки и количеством конфет, которое следует из неё взять.
import sys
def read_input():
n = int(input())
candies = list(map(int, input().split()))
return n, candies
def print_move(vase, count):
print(vase + 1, count)
sys.stdout.flush()
def find_best_move(candies):
for i in range(len(candies)):
if candies >= 1:
return i, 1
if candies >= 2:
return i, 2
return -1, -1
def main():
n, candies = read_input()
while True:
vase, count = find_best_move(candies)
if vase == -1:
print(-1)
sys.stdout.flush()
break
print_move(vase, count)
candies[vase] -= count
jury_move = input().strip()
if jury_move == "-1":
break
jury_vase, jury_count = map(int, jury_move.split())
candies[jury_vase - 1] -= jury_count
if all(c == 0 for c in candies):
break
if __name__ == "__main__":
main()
Требуется играть против программы жюри в описанную игру, делая ходы за первого игрока. Сначала следует прочитать начальные данные об игре. Чтобы сделать ход, следует вывести на отдельной строке этот ход. Если возможных ходов нет, или участник хочет сдаться заранее, следует вместо хода вывести число -1. После вывода необходимо очистить буфер вывода: sys.stdout.flush () в Python.
Далее, если игра окончена, программа должна завершить работу. В противном случае следует прочитать ход, сделанный программой жюри, и делать следующий ход. Жюри выводит ходы по тем же правилам, что и программа участника. В частности, одно число -1 в строке означает победу программы участника. Решение считается правильным, если оно выигрывает во всех тестах, в которых можно выиграть при правильной игре, а при неизбежном проигрыше рано или поздно выводит -1.
Есть n вазочек с конфетами: в первой вазочке количество конфет равно a1, во второй — a2, . . ., в n-й — an. За один ход можно взять из одной любой вазочки 1 или 2 конфеты. В первой строке задано одно целое число n (1 ≤ n ≤ 100). Во второй строке заданы числа a1, a2, . . ., an, разделённые пробелами (1 ≤ ai ≤ 100).
Ход записывается двумя числами — номером вазочки и количеством конфет, которое следует из неё взять.