Найти тему
_defaultIT

В сервисе починки роботов очень важно соблюдать порядок. Программа на Python.

Попалась олимпиадная задачка по информатике 6-11 класс.

Нужно написать программу на Python:

В сервисе починки роботов очень важно соблюдать порядок. Главный механик любит, чтобы все роботы стояли друг за другом — сначала только сломанные (если они есть), а потом исправные (если они есть).

По ночам роботы всё время гуляют по ангару, и к утру порядок, установленный главным механиком, нарушается. Механик решил наказывать роботов, которые нарушают порядок, и удалять из очереди. Но роботы взбунтовались и требуют равноправия — если уж удалять из очереди, то равное количество исправных и сломанных роботов.

Сломанные роботы обозначаются буквой B (broken), исправные — буквой W (working).

Есть строка из букв B и W. Надо удалить наименьшее и равное количество сломанных и исправных роботов так, чтобы в очереди сначала стояли только сломанные, а потом только исправные. Может оказаться, что одних или других нет. Общее количество роботов в очереди не превышает 10 000.

Выведи количество удалённых роботов и очередь, которая получилась после удаления нарушивших правило роботов.

Если в очереди никого не осталось, выведи "Никого не осталось!".

Вот программа на Python, которая реализует эти требования:

def remove_robots(robot_queue):
broken_count = 0
working_count = 0
for robot in robot_queue:
if robot == 'B':
broken_count += 1
else:
working_count += 1
remove_count = min(broken_count, working_count) * 2
broken_count -= remove_count // 2
working_count -= remove_count // 2
new_queue = 'B' * broken_count + 'W' * working_count
if len(new_queue) == 0:
return (remove_count, "Никого не осталось!")
return (remove_count, new_queue)

robot_queue = input("Введите очередь роботов: ")
result = remove_robots(robot_queue)
print("Удаленные роботы: ", result[0])
print("Оставшаяся очередь: ", result[1])

Программа принимает от пользователя очередь роботов, подсчитывает количество сломанных и работающих роботов, удаляет минимального из них и возвращает количество удаленных роботов и оставшуюся очередь. Если после удаления роботов очередь пуста, возвращается сообщение "Никого не осталось!".

код по ссылке ниже
код по ссылке ниже
main.py

Нашли ошибку? Давайте исправим! Пишите в комментариях!