Для решения этой задачи нам нужно реализовать алгоритм, который будет вычислять среднюю оценку, учитывая правило о закрытии двоек, и округлять её вниз до ближайшего целого числа. Давайте разберёмся, как это можно сделать на языке Python.
Шаги решения:
- Прочитаем вводные данные и преобразуем их в список оценок.
- Пройдёмся по списку и удалим из него "закрытые двойки". Двойка считается закрытой, если после неё идёт оценка, не равная двум.
- Вычислим среднее арифметическое оставшихся оценок.
- Округлим полученное среднее вниз до ближайшего целого числа.
- Выведем результат.
Теперь напишем код на Python:
def calculate_final_grade(grades):
# Преобразуем строку оценок в список целых чисел
grades = list(map(int, grades.split()))
# Удаляем закрытые двойки
filtered_grades = []
skip_next = False
for i in range(len(grades) - 1):
if skip_next:
skip_next = False
continue
if grades[i] == 2 and grades[i + 1] != 2:
# Двойка закрыта, пропускаем её
skip_next = True
else:
filtered_grades.append(grades[i])
# Добавляем последнюю оценку, если она не была обработана
if not skip_next:
filtered_grades.append(grades[-1])
# Вычисляем среднее арифметическое оставшихся оценок
average = sum(filtered_grades) / len(filtered_grades)
# Округляем вниз до ближайшего целого числа
final_grade = int(average)
return final_grade
# Пример использования
input_data = "2 5 2 5 2 5 2 5 2 5"
print(calculate_final_grade(input_data)) # Вывод: 5
input_data = "2 2 2 2 2 2 2 2 2 5"
print(calculate_final_grade(input_data)) # Вывод: 2
input_data = "5 5 5 5 5 5 5 5 5 2"
print(calculate_final_grade(input_data)) # Вывод: 4
Этот код корректно обрабатывает входные данные, удаляет закрытые двойки и вычисляет среднюю оценку Васи, округляя её вниз.