Шість головних учасників американського ситкому Друзі всі погодились, що їм буде виплачено однакову зарплату протягом усього циклу (принаймні після 2 сезону). Але це не означає, що всі вони мали однакову кількість ефірного часу або що всі вони взаємоділи на екрані між собою однаковою кількістю.
У цьому виклику ви напишете програму, яка допоможе визначити, хто з друзів- друзів справді найкращий.
Налаштування
Подумайте про перегляд епізоду чи сцени Друзів та зауважте, хто саме є на екрані під час кожного зйомки камери та протягом якого часу.
Ми скоротимо ім’я кожного персонажа:
Потім для кожного зніманого камери (або кожного разу, коли персонаж входить / виходить з фотографії), ми перерахуємо, хто був на екрані. Наприклад:
504 CRS
200 J
345 MP
980
2000 CJMPRS
Це говорить про те, що:
- Протягом 504 мс на екрані були Чандлер, Рейчел та Росс.
- Тоді за 200 мс Джої був.
- Тоді за 345 мс були Моніка і Фібі.
- Тоді протягом 980 мс на екрані не було жодного з 6 головних персонажів.
- Потім на 2 секунди всі вони були.
(Це не з фактичного кліпу, я його склав.)
Зауважте, що наступне було б рівнозначним:
504 CRS
1 J
199 J
345 MP
980
2000 CJMPRS
Щоб проаналізувати, які комбінації символів мали найбільше часу на екрані, ми розглянемо всі 64 можливі підмножини з 6 символів та підсумовуємо час екрану. Якщо всі підмножини з’являються на екрані під час зйомки з камери, навіть якщо в підмножині є більше символів, ніж лише ті, що є , під час цього знімання додається час загального екрану підмножини.
Існує виняток для порожнього підмножини - враховуються лише сцени з жодним із 6 головних символів.
Тож аналіз наведеного вище прикладу був би таким:
980
2504 C
2200 J
2345 M
2345 P
2504 R
2504 S
2000 CJ
2000 CM
2000 CP
2504 CR
2504 CS
2000 JM
2000 JP
2000 JR
2000 JS
2345 MP
2000 MR
2000 MS
2000 PR
2000 PS
2504 RS
2000 CJM
2000 CJP
2000 CJR
2000 CJS
2000 CMP
2000 CMR
2000 CMS
2000 CPR
2000 CPS
2504 CRS
2000 JMP
2000 JMR
2000 JMS
2000 JPR
2000 JPS
2000 JRS
2000 MPR
2000 MPS
2000 MRS
2000 PRS
2000 CJMP
2000 CJMR
2000 CJMS
2000 CJPR
2000 CJPS
2000 CJRS
2000 CMPR
2000 CMPS
2000 CMRS
2000 CPRS
2000 JMPR
2000 JMPS
2000 JMRS
2000 JPRS
2000 MPRS
2000 CJMPR
2000 CJMPS
2000 CJMRS
2000 CJPRS
2000 CMPRS
2000 JMPRS
2000 CJMPRS
Ми можемо це бачити J
(тільки у Джої) було 2200 мс екранного часу, тому що він мав 200 сам і 2000 з усіма.
Виклик
Напишіть програму, яка містить рядок або текстовий файл, наприклад
504 CRS
200 J
345 MP
980
2000 CJMPRS
де кожен рядок має форму [time in ms] [characters on screen]
, і виводить загальний проміжок часу, який кожен з 64 підмножин з 6 символів провів на екрані, де кожен рядок має форму[total time in ms for subset] [characters in subset]
(так само, як вище).
Вхід може бути сприйнятий як рядок до stdin, командного рядка або функції, або це може бути ім'я текстового файлу, який містить дані.
- Числа мілісекунд завжди будуть додатними цілими числами.
- Букви символів завжди будуть в порядку
CJMPRS
(в алфавітному порядку). - Ви можете припустити, що на сцені немає місця, наприклад, наприклад (наприклад
980
). - Ви можете припустити, що існує зворотний новий рядок.
- Вхід матиме щонайменше 1 рядок і його може бути довільно багато.
Вихід повинен бути надрукований або повернутий або записаний в інший текстовий файл у вигляді рядка 64 рядка.
- Рядки можуть бути в будь-якому порядку.
- Букви символів не повинні бути в
CJMPRS
порядку. - Підгрупи з 0ms загальний час дійсно повинні бути перераховані.
- Необов'язково може бути пробіл після загальної сукупності порожнього підмножини.
- Необов'язково може бути нова лінія рядка.
(Звичайно, цю проблему можна узагальнити до більшої кількості персонажів, але ми будемо дотримуватися 6 символів CJMPRS
Друзів .)
Виграє найкоротший код у байтах.
Зауважте, що я насправді насолоджуюся Друзями і не думаю, що деякі персонажі важливіші за інші. Статистика була б цікава. ;)