Уявімо себе сценічним глашатаєм на міжнародній конференції. Наше завдання - оголошувати спікерів, нагадувати їм, коли час вичерпано, і модерувати сесію запитань і відповідей. Заздалегідь ми отримуємо список спікерів на своїй сцені й маємо перетворити його на картки модерації.
Оскільки список має особливий формат, ми вирішуємо написати коротку програму, яка розбирає отриманий список за допомогою регулярних виразів (regex) і автоматично створює картки модерації.
Ця вправа не про вивчення регулярних виразів. Вона про те, як використовувати регулярні вирази в $lang. Підказки містять регулярний вираз, який можна використати, якщо не хочеться писати власний.
Список, який ми отримуємо, містить для кожної доповіді таку інформацію:
Повний запис має такий вигляд:
»Speedrunning 101« – Sasha Duda Krall (they/them), from GDQU. Start: 13:00, Q&A: 13:20, End: 13:30
Тут назва - Speedrunning 101, імʼя спікера - Sasha Duda Krall, він із GDQU і використовує займенники they/them.
Доповідь починається о 13:00, о 13:20 розпочнеться сесія запитань і відповідей, а завершиться все о 13:30.
Оскільки імена можуть містити звичайні дефіси -, для розділення імені спікера й назви доповіді використовують середнє тире –.
Картка модерації, яку наша програма має створити для цієї доповіді, має такий вигляд:
- Our next speaker is Sasha Duda Krall, from GDQU
- Their talk is called »Speedrunning 101«
- They will answer your questions in the Q&A session at the end of the talk, starting at 13:20
13:00 - 13:20 - 13:30
Увесь список може мати такий вигляд:
»Speedrunning 101« – Sasha Duda Krall (they/them), from GDQU. Start: 13:00, Q&A: 13:20, End: 13:30
»How I learned to say Farewell« – Madeline (she/her). Start: 13:40, Q&A: 14:00, End: 14:05
»How To Find a Good Title For Your Conference Talk« – Vítězslav Kruse (he/him). Start: 14:15, End: 14:40
»Why Emoji Matter❣« – Ash van Amelsvoort, from the University of 🧬🧪⚛. Start: 14:50, Q&A: 15:05, End: 15:10
»Can dogs look up?« – Kira "k1ralli" Sørensen. Start: 20:50, Q&A: 21:05, End: 21:10
Відповідні картки мають такий вигляд:
- Our next speaker is Madeline
- Her talk is called »How I learned to say Farewell«
- She will answer your questions in the Q&A session at the end of the talk, starting at 14:00
13:40 - 14:00 - 14:05
- Our next speaker is Vítězslav Kruse
- His talk is called »How To Find a Good Title For Your Conference Talk«
- There will not be a Q&A session
14:15 - NO Q&A - 14:40
- Our next speaker is Ash van Amelsvoort, from the University of 🧬🧪⚛
- Ash's talk is called »Why Emoji Matter❣«
- Ash will answer your questions in the Q&A session at the end of the talk, starting at 15:05
14:50 - 15:05 - 15:10
- Our next speaker is Kira "k1ralli" Sørensen
- Kira's talk is called »Can dogs look up?«
- Kira will answer your questions in the Q&A session at the end of the talk, starting at 21:05
20:50 - 21:05 - 21:10
Кілька зауваг:
Найпростіше зробити це за допомогою інструмента для побудови регулярних виразів, як-от regex101 чи RegExr.
!!! warning Обовʼязково встановіть рушій/діалект регулярних виразів на $CHANGE_ME.
Якщо регулярні вирази для нас нові або складно створити один вираз, який одразу захоплює всю потрібну інформацію, можна визначити кілька менших виразів, кожен з яких захоплює частину інформації.
Використайте вираз із першої частини та реалізуйте функцію, яка приймає рядок на вхід, захоплює з нього інформацію і повертає створену картку модерації згідно з наведеною вище специфікацією.
Майбутні тестові випадки мають відповідати таким настановам:
»«, а імʼя не повинно містити ком.[a-zA-Z] чи щось подібне для імені, назви чи організації, не повинні проходити тести.