
Вопрос задан 11.10.2024 в 13:32.
Предмет Информатика.
Спрашивает Солдатова Варя.
Напишите программу на Python
В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда образуется непрерывная цепочка из трех и более шариков одного цвета, она удаляется из линии. Все шарики при этом сдвигаются друг к другу, и ситуация может повториться.
Напишите программу, которая по данной ситуации определяет, сколько шариков будет сейчас "уничтожено". Естественно, непрерывных цепочек из трех и более одноцветных шаров в начальный момент может быть не более одной.
Входные данные
Сначала вводится количество шариков в цепочке (не более 1000) и цвета шариков (от 0 до 9, каждому цвету соответствует свое целое число).
Выходные данные
Требуется вывести количество шариков, которое будет "уничтожено".
Примеры
входные данные
5 1 3 3 3 2
выходные данные
3
входные данные
12 1 1 2 1 2 2 2 1 1 2 2 1
выходные данные
12
Только, пожалуйста, без очень сложного решения на уровне университета!!
Ответы на вопрос

Отвечает Толкачёва Кристина.
Для решения задачи об уничтожении шариков в игре, где цепочка шариков состоит из разных цветов, мы можем использовать простой подход. Программа будет проверять, есть ли в цепочке непрерывная последовательность из трех и более шариков одного цвета, и если такая последовательность найдется, то она будет "уничтожена".
Вот шаги, которые необходимо выполнить:
- Считать входные данные: сначала мы получим количество шариков и цвета этих шариков в виде списка.
- Поиск цепочек: будем проходить по списку шариков и искать последовательности из трех и более одинаковых цветов.
- Подсчет уничтоженных шариков: если найдена такая последовательность, мы добавим количество шариков в счетчик уничтоженных.
- Вывод результата: напечатаем общее количество уничтоженных шариков.
Пример программы на Python
Вот пример кода, который выполняет описанные шаги:
pythondef count_destroyed_balls():
# Считываем количество шариков и их цвета
input_data = input().strip().split()
n = int(input_data[0]) # количество шариков
balls = list(map(int, input_data[1:n+1])) # цвета шариков
# Инициализируем счетчик уничтоженных шариков
destroyed_count = 0
# Переменная для хранения текущего цвета и его подсчета
current_color = balls[0]
current_count = 1
# Проходим по всем шарикам начиная со второго
for i in range(1, n):
if balls[i] == current_color:
current_count += 1 # увеличиваем счетчик для текущего цвета
else:
# Проверяем, нужно ли уничтожить шарики
if current_count >= 3:
destroyed_count += current_count
# Сброс счетчиков для нового цвета
current_color = balls[i]
current_count = 1
# Проверяем последний цвет в конце списка
if current_count >= 3:
destroyed_count += current_count # Выводим количество уничтоженных шариков
print(destroyed_count)
# Вызов функции
count_destroyed_balls()
Как работает программа:
- Ввод данных: программа считывает строку с входными данными, разбивает ее на части и извлекает количество шариков и их цвета.
- Цикл по шарикам: с помощью цикла
for
проходим по всем цветам шариков. Если текущий цвет совпадает с предыдущим, увеличиваем счетчик. Если цвет меняется, проверяем, сколько шариков было уничтожено (если их три или более). - Проверка последней группы: после завершения цикла мы также проверяем, была ли последняя группа шариков из трех и более, и добавляем их к счетчику уничтоженных.
- Вывод результата: программа выводит общее количество уничтоженных шариков.
Примеры использования
Если вы введете следующие данные:
5 1 3 3 3 2
Программа вернет:
3
А для данных:
12 1 1 2 1 2 2 2 1 1 2 2 1
Результат будет:
12
Этот код прост и эффективен для решения задачи с ограничением на количество шариков в 1000.
Похожие вопросы









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









Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili