Вопрос задан 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


Только, пожалуйста, без очень сложного решения на уровне университета!!

Перейти к ответам

Ответы на вопрос

Отвечает Толкачёва Кристина.

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

Вот шаги, которые необходимо выполнить:

  1. Считать входные данные: сначала мы получим количество шариков и цвета этих шариков в виде списка.
  2. Поиск цепочек: будем проходить по списку шариков и искать последовательности из трех и более одинаковых цветов.
  3. Подсчет уничтоженных шариков: если найдена такая последовательность, мы добавим количество шариков в счетчик уничтоженных.
  4. Вывод результата: напечатаем общее количество уничтоженных шариков.

Пример программы на Python

Вот пример кода, который выполняет описанные шаги:

python
def 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()

Как работает программа:

  1. Ввод данных: программа считывает строку с входными данными, разбивает ее на части и извлекает количество шариков и их цвета.
  2. Цикл по шарикам: с помощью цикла for проходим по всем цветам шариков. Если текущий цвет совпадает с предыдущим, увеличиваем счетчик. Если цвет меняется, проверяем, сколько шариков было уничтожено (если их три или более).
  3. Проверка последней группы: после завершения цикла мы также проверяем, была ли последняя группа шариков из трех и более, и добавляем их к счетчику уничтоженных.
  4. Вывод результата: программа выводит общее количество уничтоженных шариков.

Примеры использования

Если вы введете следующие данные:

5 1 3 3 3 2

Программа вернет:

3

А для данных:

12 1 1 2 1 2 2 2 1 1 2 2 1

Результат будет:

12

Этот код прост и эффективен для решения задачи с ограничением на количество шариков в 1000.

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос