С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 21.10.2023
Сообщений: 3

Строки-2 "Три в ряд" (lms yandex)

21.10.2023, 00:48. Показов 2011. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот мой код для решения этой задачи:

Python
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
n = int(input())
pol = "_" * n
pol = " ".join(pol).split(" ")
pols = pol.copy()
k = 1
s = 0
score1 = 0
score2 = 0
while n:
    h1 = input()
    h1 = h1.split(" ")
    if k % 2 == 1:
        if int(h1[0]) < 0 or int(h1[0]) >= n or pol[int(h1[0])] != "_":
            print("This place is taken.")
        else:
            pol[int(h1[0])] = h1[1]
            print("AI step", " ".join(h1))
            k += 1
    else:
        if int(h1[0]) < 0 or int(h1[0]) >= n or pol[int(h1[0])] != "_":
            print("This place is taken.")
        else:
            pol[int(h1[0])] = h1[1]
            print("Your step", " ".join(h1))
            k += 1
    for i in range(len(pol) - 2):
        if pol[i] == pol[i + 1] == pol[i + 2] and pol[i] != "_":
            print(*pol)
            pol[i] = '_'
            pol[i + 1] = '_'
            pol[i + 2] = '_'
            if k % 2 == 0:
                score2 += 1
            elif k % 2 == 1:
                score1 += 1
    print(*pol)
    for i in pol:
        if i != "_":
            s += 1
    if s == n:
        if k % 2 == 0 and score2 != score1:
            print("You win!", score1, ":", score2)
            break
        elif k % 2 == 1 and score2 != score1:
            print("Ai win!", score2, ":", score1)
            break
        else:
            print("We have a tie.")
            break
Выдается такая ошибка:
Traceback (most recent call last):
File "/temp/executing/solution.py", line 10, in <module>
h1 = input()
^^^^^^^
EOFError: EOF when reading a line
make: *** [Makefile:5: run] Error 1

Помогите с ее решением, не понимаю проблему программы
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.10.2023, 00:48
Ответы с готовыми решениями:

массив символов. С++ Заданы три строки, напишите программу, которая соединит три строки в одну таким образом, что
Заданы три строки длиной по 11 символов. Напишите программу, которая соединит три строки в одну таким образом, что в первую очередь будет...

Вывести первые три символа строки и последние три символа, если длина строки больше 5
Дана строка. Вывести первые три символа и последний три символа, если длина строки больше 5. Иначе вывести первый символ столько раз,...

Переставить первые три и последние три строки массива, сохранив порядок
Двумерный массив содержит 15 строк. Переставить первые три и последние три строки, сохранив порядок следования. Без использования...

4
Вирусоборец
 Аватар для thyrex
14439 / 7481 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
21.10.2023, 10:53
Условие должны сами придумать?
0
0 / 0 / 0
Регистрация: 21.10.2023
Сообщений: 3
21.10.2023, 11:12  [ТС]
Вам предстоит написать простую игру с компьютером, модификацию всем известной "Три в ряд".
Условия простые.
Пользователь вводит число – сколько мест в линии, первый ход делает компьютер, вводит строку: место и цвет (’R’, ’G’ или ’B’) через пробел, нумерация с 0.
Выводится сообщение, кто сделал и какой ход:
AI step <шаг>
или
Your step <шаг>

Выводится строка с размещенной буквой.
Затем ходит пользователь, вводит в одной строке место и цвет (’R’, ’G’ или ’B’) через пробел. Если три буквы одного цвета рядом, они пропадают, тому, кто поставил последнюю, начисляется очко и линия выводится ещё раз, уже без одинаковых букв, стоящих рядом.
Игра продолжается, пока есть места.
Если пользователь хочет походить на занятое место, выводится сообщение:
This place is taken.

По окончании выводятся сообщения, кто выиграл и счёт.
Если выиграл компьютер, вывести:
AI win! <счёт> : <счёт>

Если выиграл пользователь, выводим:
You win! <счёт> : <счёт>

Если ничья:
We have a tie.

Пример работы программы:

5
AI step 2 R
_ _ R _ _
Your step 1 B
_ B R _ _
AI step 0 B
B B R _ _
Your step 3 R
B B R R _
AI step 4 R
B B R R R
B B _ _ _
Your step 3 G
B B _ G _
AI step 2 G
B B G G _
Your step 4 R
B B G G R
AI win! 1 : 0
0
0 / 0 / 0
Регистрация: 21.10.2023
Сообщений: 3
21.10.2023, 15:22  [ТС]
Условие:

Вам предстоит написать простую игру с компьютером, модификацию всем известной "Три в ряд".
Условия простые.
Пользователь вводит число – сколько мест в линии, первый ход делает компьютер, вводит строку: место и цвет (’R’, ’G’ или ’B’) через пробел, нумерация с 0.
Выводится сообщение, кто сделал и какой ход:
AI step <шаг>
или
Your step <шаг>

Выводится строка с размещенной буквой.
Затем ходит пользователь, вводит в одной строке место и цвет (’R’, ’G’ или ’B’) через пробел. Если три буквы одного цвета рядом, они пропадают, тому, кто поставил последнюю, начисляется очко и линия выводится ещё раз, уже без одинаковых букв, стоящих рядом.
Игра продолжается, пока есть места.
Если пользователь хочет походить на занятое место, выводится сообщение:
This place is taken.

По окончании выводятся сообщения, кто выиграл и счёт.
Если выиграл компьютер, вывести:
AI win! <счёт> : <счёт>

Если выиграл пользователь, выводим:
You win! <счёт> : <счёт>

Если ничья:
We have a tie.

Пример работы программы:

5
AI step 2 R
_ _ R _ _
Your step 1 B
_ B R _ _
AI step 0 B
B B R _ _
Your step 3 R
B B R R _
AI step 4 R
B B R R R
B B _ _ _
Your step 3 G
B B _ G _
AI step 2 G
B B G G _
Your step 4 R
B B G G R
AI win! 1 : 0

вот мой код для решения этой задачи:

n = int(input())
pol = "_" * n
pol = " ".join(pol).split(" ")
pols = pol.copy()
k = 1
s = 0
score1 = 0
score2 = 0
while n:
h1 = input()
h1 = h1.split(" ")
if k % 2 == 1:
if int(h1[0]) < 0 or int(h1[0]) >= n or pol[int(h1[0])] != "_":
print("This place is taken.")
else:
pol[int(h1[0])] = h1[1]
print("AI step", " ".join(h1))
k += 1
else:
if int(h1[0]) < 0 or int(h1[0]) >= n or pol[int(h1[0])] != "_":
print("This place is taken.")
else:
pol[int(h1[0])] = h1[1]
print("Your step", " ".join(h1))
k += 1
for i in range(len(pol) - 2):
if pol[i] == pol[i + 1] == pol[i + 2] and pol[i] != "_":
print(*pol)
pol[i] = '_'
pol[i + 1] = '_'
pol[i + 2] = '_'
if k % 2 == 0:
score2 += 1
elif k % 2 == 1:
score1 += 1
print(*pol)
for i in pol:
if i != "_":
s += 1
if s == n:
if k % 2 == 0 and score2 != score1:
print("You win!", score1, ":", score2)
break
elif k % 2 == 1 and score2 != score1:
print("Ai win!", score2, ":", score1)
break
else:
print("We have a tie.")
break

Выдается такая ошибка:
Traceback (most recent call last):
File "/temp/executing/solution.py", line 10, in <module>
h1 = input()
^^^^^^^
EOFError: EOF when reading a line
make: *** [Makefile:5: run] Error 1

Помогите с ее решением, не понимаю проблему программы
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
23.10.2023, 21:54
Python
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
from random import choice, shuffle
 
def find_3(a):
    for i in range(len(a) - 3 + 1):
        s = a[i:i + 3]
        if s.count('_') == 1 and len(se := set(s)) == 2:
            se.remove('_')
            return s.index('_') + i, se.pop()
 
def is_good(a):
    return not find_3(a)
 
def remove_3(a):
    for C in 'RGB':
        if C*3 in (s := ''.join(a)):
            s = s.replace(C*3, '___')
            return list(s)
    return a
 
def get_step(a):
    if (res := find_3(a)):
        return res
    space_ind = [i for i in range(len(a)) if a[i]=='_']
    shuffle(space_ind)
    for i in space_ind:
        a_cur = list('RGB')
        shuffle(a_cur)
        for color in a_cur:
            a_new = a.copy()
            a_new[i] = color
            if is_good(a_new):
                return i, color
    return choice(space_ind), choice(a_cur)
 
n = int(input('Ширина поля->'))
arr = list('_' * n)
res_comp = 0
res_user = 0
while True:
    i, color = get_step(arr)
    print(f'\nХод компьютера: {i} {color}')
    arr[i] = color
    print(*arr)
    arr_new = remove_3(arr)
    if arr_new != arr:
        res_comp += 1
        arr = arr_new
        print(*arr)
    if '_' not in arr:
        break
 
    while True:
        try:
            i, color = input('\nВаш ход->').split()
            i = int(i)
            if arr[i] != '_':
                print('Это место занято')
                continue
        except:
            continue
        if color in 'RGB':
            arr[i] = color
            break
    print(*arr)
    arr_new = remove_3(arr)
    if arr_new != arr:
        res_user += 1
        arr = arr_new
        print(*arr)
    if '_' not in arr:
        break
if res_comp > res_user:
    print(f'Компьютер победил! {res_comp} : {res_user}')
elif res_user > res_comp:
    print(f'Вы победили! {res_user} : {res_comp}')
else:
    print(f'Ничья. {res_user} : {res_comp}')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2023, 21:54
Помогаю со студенческими работами здесь

Переставить первые три и последние три строки массива, сохранив порядок
Очень нужна помощь в решении задачи, уже какой день над ней бьюсь и не могу решить. Дан двумерный массив из пятнадцати строк и восьми...

Дан двумерный массив из N строк и M столбцов. Переставить первые три и последние три строки
Задачу решить с помощью ступенчатого массива Дан двумерный массив из N строк и M столбцов. Переставить первые три и последние три строки,...

Напишите программу, выводящую целые числа в три строки и три столбца, с использованием манипуляторов
Напишите программу, выводящую целые числа в три строки и три столбца, с использованием манипуляторов. Числа для вывода: 1 10 100 20 200...

Три в ряд
Здравствуйте, программа проходит все мои тесты, но яндекс почему-то выдаёт ошибку. Задача: Вам предстоит написать простую игру с...

Три в ряд
Три в ряд Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод стандартный вывод или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru