• Предмет: Информатика
  • Автор: Alinamaima2264
  • Вопрос задан 3 месяца назад

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

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

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

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

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

Если в очереди никого не осталось, выведи "НИКОГО НЕ ОСТАЛОСЬ"


archery: def fix_robot_queue(queue):
removed = 0

while "WB" in queue:
queue = queue.replace("W","", 1) # удаляем первую втречную W

# удаляем первую втречную B с конца
t = queue[::-1] # так как не существует замены работающей с права на лево, то переворачиваем строку
t = t.replace("B","", 1) # удаляем первую втречную B
queue = t[::-1] # обратный переворот

removed += 2

print(removed)
print(queue if len(queue) > 0 else "НИКОГО НЕ ОСТАЛОСЬ")
archery: # Пример работы
fix_robot_queue("BBWWBWWWBBWWBWBWWWW")
fix_robot_queue("BBBBBB")
fix_robot_queue("WWWWW")
fix_robot_queue("BBBWWWWW")
fix_robot_queue("BBWWBWWBBWWBBWWW")
archery: в задании не сказано, что способом должен быть оптимальный. Потому удаляется не минимальное колво роботов

Ответы

Ответ дал: archery
0

def fix_robot_queue(queue):

   removed = 0

   while "WB" in queue:

       queue = queue.replace("W","", 1) # удаляем первую втречную W

       # удаляем первую втречную B с конца

       t = queue[::-1] # так как не существует замены работающей с права на лево, то переворачиваем строку

       t = t.replace("B","", 1) # удаляем первую втречную B

       queue = t[::-1] # обратный переворот

       removed += 2

   print(removed)

   print(queue if len(queue) > 0 else "НИКОГО НЕ ОСТАЛОСЬ")

# Пример работы

fix_robot_queue("BBWWBWWWBBWWBWBWWWW")


archery: если помогло, то выбери ответ лучшим плиз
Вас заинтересует