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

На Python
В сервисе починки роботов очень важно соблюдать порядок. Главный механик любит, чтобы все роботы стояли друг за другом — сначала только сломанные (если они есть), а потом исправные (если они есть).
По ночам роботы всё время гуляют по ангару, и к утру порядок, установленный главным механиком, нарушается. Механик решил наказывать роботов, которые нарушают порядок, и удалять из очереди. Но роботы взбунтовались и требуют равноправия — если уж удалять из очереди, то равное количество исправных и сломанных роботов.
Сломанные роботы обозначаются буквой B (broken), исправные — буквой W (working).
Есть строка из букв B и W. Надо удалить наименьшее и равное количество сломанных и исправных роботов так, чтобы в очереди сначала стояли только сломанные, а потом только исправные. Может оказаться, что одних или других нет. Общее количество роботов в очереди не превышает 10 000.
Выведи количество удалённых роботов и очередь, которая получилась после удаления нарушивших правило роботов.
Если в очереди никого не осталось, выведи "НИКОГО НЕ ОСТАЛОСЬ".

Ввод Вывод
BWBWWBW 2
BBWWW
BWWWWW 0
BWWWW
BBBBB 0
BBBBB
WWBB 4
НИКОГО НЕ ОСТАЛОСЬ

Ответы

Ответ дал: xdm2hw4hrn
2

Ответ:

Объяснение: Вот программа на Python, которая решает эту проблему:

queue = input().strip()

n_broken = queue.count('B')

n_working = queue.count('W')

if n_broken == 0 or n_working == 0:

   print("NO ONE LEFT")

else:

   min_count = min(n_broken, n_working)

   removed_count = abs(n_broken - n_working) // 2

   if n_broken < n_working:

       new_queue = 'W' * (n_working - removed_count) + 'B' * (n_broken - removed_count)

   else:

       new_queue = 'B' * (n_broken - removed_count) + 'W' * (n_working - removed_count)

   print(removed_count)

   print(new_queue)

Сначала программа считывает входную строку и подсчитывает количество сломанных и работающих роботов. Если одно из этих чисел равно нулю, программа печатает "NO ONE LEFT" и выходит из программы. В противном случае он подсчитывает минимальное количество сломанных и работающих роботов и удаляет одинаковое количество роботов каждого типа, необходимое для достижения желаемого порядка. Затем он строит новую очередь, помещая работающих роботов за сломанными, и печатает количество удаленных роботов и новую очередь.


198513marina: не работает херню впехнул
Вас заинтересует